{"version":3,"file":"js/totalizer-bundle-b0ff307379068c4dd736.js","mappings":"+HASQA,EACAC,E,sBCRFC,EAAQ,SAAC,GAAuB,IAArBC,EAAoB,EAApBA,MAAOC,EAAa,EAAbA,OACtB,OAAOC,OAAOC,KAAKC,MAAMJ,IAAQK,SAASJ,EAAQ,KAAKK,MAAM,IAAIC,KAAI,SAACC,EAAGC,GACvE,OAAO,uBAAKC,UAAU,QAAQC,IAAKF,GAAID,OAO3C,aACE,OAAgCI,EAAAA,EAAAA,UAAS,GAAlCC,EAAP,KAAiBC,EAAjB,KACA,GAAgCF,EAAAA,EAAAA,UAAS,KAAlCG,EAAP,KAAiBC,EAAjB,KACA,GAAkCJ,EAAAA,EAAAA,UAAS,GAApCK,EAAP,KAAkBC,EAAlB,KACA,GAAkCN,EAAAA,EAAAA,UAAS,GAApCO,EAAP,KAAkBC,EAAlB,KACA,GAA0BR,EAAAA,EAAAA,UAAS,GAA5BZ,EAAP,KAAcqB,EAAd,KAEMC,GAAaC,EAAAA,EAAAA,QAAO,MACpBC,GAAeD,EAAAA,EAAAA,QAAO,MACtBE,GAAeF,EAAAA,EAAAA,QAAO,MACtBG,GAAcH,EAAAA,EAAAA,QAAO,MACrBI,GAAcJ,EAAAA,EAAAA,QAAO,MAC3BC,EAAaI,QAAUX,EACvBQ,EAAaG,QAAUT,EACvBO,EAAYE,QAAUf,EACtBc,EAAYC,QAAUb,EA2BtB,OAfAc,EAAAA,EAAAA,YAVgB,SAAVC,EAAUC,GAEdV,EAASU,GACT,IAvBmBC,EACRC,EAAGC,EAAKC,EAsBbC,EAAmBT,EAAYC,QAAUF,EAAYE,QACrDS,GAvBKJ,GAuBsCF,EAAOL,EAAYE,SAAWQ,EAvBjEF,EAuBkF,EAvB7EC,EAuBiF,GAxBjFH,EACQ7B,KAAK+B,IAAI/B,KAAKgC,IAAIF,EAAGC,GAAMC,IAD5B,GAAK,EAAEH,EAAEA,EAAEA,EAAEA,EAAI,EAAE,IAAKA,EAAGA,EAAEA,EAAEA,GAyBnDM,EAAYb,EAAaG,QAAUJ,EAAaI,QAChDW,EAAepC,KAAK+B,IAAIV,EAAaI,QAAUS,EAAqBC,EAAWb,EAAaG,SAClGP,EAASkB,GACTjB,EAAWM,QAAUY,sBAAsBV,KAE1B,KAEnBD,EAAAA,EAAAA,YAAU,WACRY,IAAIC,sBAAwBD,IAAIE,MAAMC,cAAcC,OAAO,CACzDC,QAAS,oBACR,CACDC,SAAU,SAASC,GACjB9B,EAAaO,EAAaG,SAC1BR,EAAa4B,EAAKC,cAClBnC,EAAYoC,YAAYC,OACxBnC,EAAYkC,YAAYC,MAAQ,UAGnC,IAEW,IAAVnD,EAAoB,KAEjB,uBAAKU,UAAU,uBACpB,uBAAKA,UAAU,WACb,gBAACX,EAAD,CAAOC,MAAOA,EAAOC,OAAQC,OAAOiB,GAAWlB,UAEjD,uBAAKS,UAAU,aAAf,8CCzDE0C,EAAc,uBAAK1C,UAAU,SACjC,uBAAKA,UAAU,cAAf,eACA,0FACA,oUAII2C,EAAmB,uBAAK3C,UAAU,SACtC,uBAAKA,UAAU,cAAf,qBACA,2CAAkB,sCAAlB,iBACA,qYAII4C,EAAc,uBAAK5C,UAAU,SACjC,uBAAKA,UAAU,cAAf,2BACA,kFACA,4TAIF,WAAe,GAAgB,IAAb6C,EAAY,EAAZA,MAChB,GAAwB3C,EAAAA,EAAAA,UAAS2C,GAAS,eAAnCC,EAAP,KAAaC,EAAb,KAEA,OAAO,2BACL,uBAAK/C,UAAU,gBACb,uBAAKA,UAAU,aACb,uBAAKA,UAAU,WACb,+DACA,uBAAKA,UAAU,QACb,uBACEA,UAAS,UAAoB,gBAAT8C,EAAyB,OAAS,QACtDE,QAAS,kBAAMD,EAAQ,iBAFzB,eAGA,uBACE/C,UAAS,UAAoB,qBAAT8C,EAA8B,OAAS,QAC3DE,QAAS,kBAAMD,EAAQ,sBAFzB,qBAGA,uBACE/C,UAAS,UAAoB,gBAAT8C,EAAyB,OAAS,QACtDE,QAAS,kBAAMD,EAAQ,iBAFzB,+BAQR,uBAAK/C,UAAU,gBACb,uBAAKA,UAAU,qBACf,uBAAKA,UAAU,WACb,uBAAKA,UAAU,QACb,uBAAKiD,IAAI,8BAEA,gBAATH,GAA0BJ,EACjB,qBAATI,GAA+BH,EACtB,gBAATG,GAA0BF,M,WF7C5BzD,EAAO+D,SAASC,eAAe,aAC/B/D,EAAQD,EAAKiE,QAAQhE,MAAQiE,KAAKC,OAAMC,EAAAA,EAAAA,IAAOpE,EAAKiE,QAAQhE,QAAU,GAE5EoE,QAAQC,IAAI,CAAErE,MAAAA,IAEd8D,SAASQ,iBAAiB,oBAAoB,WAC5CC,EAAAA,OACE,gBAACC,EAAcxE,GACfD,MAKN,WACE,IAAMA,EAAO+D,SAASC,eAAe,gBAC/B/D,EAAQD,EAAKiE,QAAQhE,MAAQiE,KAAKC,OAAMC,EAAAA,EAAAA,IAAOpE,EAAKiE,QAAQhE,QAAU,GAE5EoE,QAAQC,IAAI,CAAErE,MAAAA,IAEd8D,SAASQ,iBAAiB,oBAAoB,WAC5CC,EAAAA,OACE,gBAACE,EAAezE,GAChBD,MAMN2E,I,gDGlCAC,EAAAA,GAAY,CACVC,IAAKC,OAAOC,IAAIC,kBAIhBC,QAAS,mBACTC,aAAc,CAAC,IAAIC,EAAAA,GAAAA,IAKnBC,iBAAkB,EAClBC,eAAgB,GAChBC,YAAaR,OAAOC,IAAIQ,a,uDCL1B,MAKMC,EAA2B,oBAATC,KAElBC,EAA+B,oBAAXC,OACpBC,EAA6B,oBAAhBC,YAA6B,IAAIA,iBAAgBC,EAG9DC,GAF6B,oBAAhBC,aAA6B,IAAIA,YAErCC,MAAMC,UAAUC,MAAMC,KADvB,sEAERC,EAAS,CAAEC,IACb,IAAIC,EAAM,GAEV,OADAD,EAAEE,SAAQ,CAACC,EAAG7F,IAAM2F,EAAIE,GAAK7F,IACtB2F,GAHI,CAIZR,GACGW,EAAQ,0EACRC,EAAUtG,OAAOuG,aAAaC,KAAKxG,QACnCyG,EAAsC,oBAApBC,WAAWC,KAC7BD,WAAWC,KAAKH,KAAKE,YACrB,CAACE,EAAIC,EAAK,CAACC,GAAMA,KAAM,IAAIJ,WAAWd,MAAMC,UAAUC,MAAMC,KAAKa,EAAI,GAAGvG,IAAIwG,IAG5EE,EAAYC,GAAMA,EAAEC,QAAQ,oBAAqB,IAkGjDC,EAAU,8EACVC,EAAWC,IACb,OAAQA,EAAKrH,QACT,KAAK,EACD,IAGmCsH,IAHxB,EAAOD,EAAKE,WAAW,KAAO,IACjC,GAAOF,EAAKE,WAAW,KAAO,IAC9B,GAAOF,EAAKE,WAAW,KAAO,EAC/B,GAAOF,EAAKE,WAAW,IAAmB,MACjD,OAAQhB,EAA0B,OAAjBe,IAAW,KACtBf,EAA2B,OAAT,KAATe,IACnB,KAAK,EACD,OAAOf,GAAU,GAAOc,EAAKE,WAAW,KAAO,IACvC,GAAOF,EAAKE,WAAW,KAAO,EAC/B,GAAOF,EAAKE,WAAW,IAClC,QACI,OAAOhB,GAAU,GAAOc,EAAKE,WAAW,KAAO,EACxC,GAAOF,EAAKE,WAAW,MAQpCC,EAAQC,GAAMA,EAAEP,QAAQC,EAASC,GAIjCM,EAAgBC,IAGlB,GADAA,EAAMA,EAAIT,QAAQ,OAAQ,KACrBZ,EAAMsB,KAAKD,GACZ,MAAM,IAAIE,UAAU,qBACxBF,GAAO,KAAK5B,MAAM,GAAkB,EAAb4B,EAAI3H,SAC3B,IAAI8H,EAAeC,EAAIC,EAAdC,EAAM,GACf,IAAK,IAAIzH,EAAI,EAAGA,EAAImH,EAAI3H,QACpB8H,EAAM7B,EAAO0B,EAAIO,OAAO1H,OAAS,GAC3ByF,EAAO0B,EAAIO,OAAO1H,OAAS,IAC1BuH,EAAK9B,EAAO0B,EAAIO,OAAO1H,QAAU,GACjCwH,EAAK/B,EAAO0B,EAAIO,OAAO1H,OAC9ByH,GAAc,KAAPF,EAAYxB,EAAQuB,GAAO,GAAK,KAC1B,KAAPE,EAAYzB,EAAQuB,GAAO,GAAK,IAAKA,GAAO,EAAI,KAC5CvB,EAAQuB,GAAO,GAAK,IAAKA,GAAO,EAAI,IAAW,IAANA,GAEvD,OAAOG,GAOLE,EAAQ/C,EAAYuC,GAAQtC,KAAK2B,EAASW,IAC1CrC,EAAcqC,GAAQpC,OAAOqB,KAAKe,EAAK,UAAUS,SAAS,UACtDV,EAEJW,EAAgB/C,EACfY,GAAMQ,EAASnB,OAAOqB,KAAKV,EAAG,WAC9BA,GAAMQ,EAASyB,EAAMjC,IAAIG,GAAKA,EAAEkB,WAAW,KAM5Ce,EAAUhD,EACTY,GAAMX,OAAOqB,KAAKV,EAAG,UAAUkC,SAAS,QACzC5C,EACKU,GAAMV,EAAIxB,OAAOqE,EAAcnC,IAC/BA,GAAMsB,EAAKW,EAAMjC,IACtBqC,EAAUrC,GAAMc,EAASd,EAAEgB,QAAQ,SAAUsB,GAAa,KAANA,EAAY,IAAM,OAMtExE,EAAUN,GAAQ4E,EAAQC,EAAO7E,M","sources":["webpack://share_harder/./app/packs/entrypoints/totalizer-bundle.js","webpack://share_harder/./app/packs/bundles/Totalizer/components/Totalizer.jsx","webpack://share_harder/./app/packs/bundles/HowItWorks/components/HowItWorks.jsx","webpack://share_harder/./app/packs/util/sentry.js","webpack://share_harder/./node_modules/js-base64/base64.mjs"],"sourcesContent":["import '../util/sentry'\n\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport Totalizer from '../bundles/Totalizer/components/Totalizer'\nimport HowItWorks from '../bundles/HowItWorks/components/HowItWorks'\nimport { decode } from 'js-base64'\n\nfunction totalizer() {\n const node = document.getElementById('totalizer')\n const props = node.dataset.props ? JSON.parse(decode(node.dataset.props)) : {}\n\n console.log({ props })\n\n document.addEventListener('DOMContentLoaded', () => {\n ReactDOM.render(\n ,\n node,\n )\n })\n}\n\nfunction howItWorks() {\n const node = document.getElementById('how-it-works')\n const props = node.dataset.props ? JSON.parse(decode(node.dataset.props)) : {}\n\n console.log({ props })\n\n document.addEventListener('DOMContentLoaded', () => {\n ReactDOM.render(\n ,\n node,\n )\n })\n}\n\ntotalizer()\nhowItWorks()\n","import React, { useEffect, useState, useRef } from 'react'\n\nconst Total = ({ count, length }) => {\n return String(Math.round(count)).padStart(length, '0').split('').map((d, i) => {\n return
{d}
\n })\n}\n\nconst easeInOutQuart = t => t<.5 ? 8*t*t*t*t : 1-8*(--t)*t*t*t\nconst clamp = (n, min, max) => Math.min(Math.max(n, min), max)\n\nexport default () => {\n const [prevTime, setPrevTime] = useState(0)\n const [nextTime, setNextTime] = useState(3000)\n const [prevCount, setPrevCount] = useState(0)\n const [nextCount, setNextCount] = useState(0)\n const [count, setCount] = useState(0)\n\n const requestRef = useRef(null)\n const prevCountRef = useRef(null)\n const nextCountRef = useRef(null)\n const prevTimeRef = useRef(null)\n const nextTimeRef = useRef(null)\n prevCountRef.current = prevCount\n nextCountRef.current = nextCount\n prevTimeRef.current = prevTime\n nextTimeRef.current = nextTime\n\n const animate = time => {\n // Change the state according to the animation\n setCount(time)\n const transitionLength = nextTimeRef.current - prevTimeRef.current\n const transitionProgress = easeInOutQuart(clamp((time - prevTimeRef.current) / transitionLength,0.0,1.0))\n const countDiff = nextCountRef.current - prevCountRef.current\n const currentCount = Math.min(prevCountRef.current + transitionProgress * countDiff, nextCountRef.current)\n setCount(currentCount)\n requestRef.current = requestAnimationFrame(animate);\n }\n useEffect(animate, [])\n\n useEffect(() => {\n App.totalizerSubscription = App.cable.subscriptions.create({\n channel: 'TotalizerChannel'\n }, {\n received: function(data) {\n setPrevCount(nextCountRef.current)\n setNextCount(data.total_clicks)\n setPrevTime(performance.now())\n setNextTime(performance.now() + 3000)\n }\n })\n }, [])\n\n if (count === 0) return null\n\n return
\n
\n \n
\n
extra website visitors for our customers
\n
\n}","import React, { useState } from 'react'\n\nconst Campaigners =
\n
Campaigners
\n

More emails, signatures and money — bigger people power

\n

\n Every good campaigner knows supporters are your biggest asset, but it’s getting harder to grow power on Facebook. ShareHarder customers see an average 45% increase in petition signatures. So don’t waste precious budget on extra ads. For as little as $30 per month, make change easier.

\n
\n\nconst ContentMarketers =
\n
Content Marketers
\n

Same content, much more traffic

\n

\n You’re a professional - you’ve tweaked your blog title, SEO, keywords and landing page. But without optimising share content you’re losing valuable leads. With Facebook getting tougher on content that isn’t engaging, you can’t afford to do that. ShareHarder users typically get 200% more clicks per share, for just a few minutes work.

\n
\n\nconst Politicians =
\n
Politicians and parties
\n

Your message reaching more voters for greater effect

\n

\n Break out of the bubble and cut through. Successful political movements can’t rely just on inauthentic ads. By optimising your organic messaging, you can empower an army of social media activists to engage with their friends. Kickstart your relational organising with ShareHarder.

\n
\n\nexport default ({ slide }) => {\n const [item, setItem] = useState(slide || 'campaigners')\n\n return
\n
\n
\n
\n

What will ShareHarder do for you?

\n
\n setItem('campaigners')}>Campaigners
\n setItem('contentMarketers')}>Content Marketers
\n setItem('politicians')}>Politicians and parties
\n
\n
\n \n \n\n
\n
\n
\n
\n \n
\n { item === 'campaigners' && Campaigners }\n { item === 'contentMarketers' && ContentMarketers }\n { item === 'politicians' && Politicians }\n
\n
\n \n}","import * as Sentry from \"@sentry/browser\";\nimport { Integrations } from \"@sentry/tracing\";\n\nSentry.init({\n dsn: window.ENV.SENTRY_PUBLIC_DSN,\n\n // Alternatively, use `process.env.npm_package_version` for a dynamic release version\n // if your build tool supports it.\n release: \"share-harder@1.0\",\n integrations: [new Integrations.BrowserTracing()],\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 1.0,\n normalizeDepth: 10, // How deep to go in Redux state tree\n environment: window.ENV.RAILS_ENV\n});","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.2';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n"],"names":["node","props","Total","count","length","String","Math","round","padStart","split","map","d","i","className","key","useState","prevTime","setPrevTime","nextTime","setNextTime","prevCount","setPrevCount","nextCount","setNextCount","setCount","requestRef","useRef","prevCountRef","nextCountRef","prevTimeRef","nextTimeRef","current","useEffect","animate","time","t","n","min","max","transitionLength","transitionProgress","countDiff","currentCount","requestAnimationFrame","App","totalizerSubscription","cable","subscriptions","create","channel","received","data","total_clicks","performance","now","Campaigners","ContentMarketers","Politicians","slide","item","setItem","onClick","src","document","getElementById","dataset","JSON","parse","decode","console","log","addEventListener","ReactDOM","Totalizer","HowItWorks","howItWorks","Sentry","dsn","window","ENV","SENTRY_PUBLIC_DSN","release","integrations","Integrations","tracesSampleRate","normalizeDepth","environment","RAILS_ENV","_hasatob","atob","_hasBuffer","Buffer","_TD","TextDecoder","undefined","b64chs","TextEncoder","Array","prototype","slice","call","b64tab","a","tab","forEach","c","b64re","_fromCC","fromCharCode","bind","_U8Afrom","Uint8Array","from","it","fn","x","_tidyB64","s","replace","re_btou","cb_btou","cccc","offset","charCodeAt","btou","b","atobPolyfill","asc","test","TypeError","u24","r1","r2","bin","charAt","_atob","toString","_toUint8Array","_decode","_unURI","m0"],"sourceRoot":""}