{"version":3,"file":"custom-domain-bundle.js","mappings":"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","sources":["webpack://flippingbooksite/webpack/runtime/chunk loaded","webpack://flippingbooksite/webpack/runtime/create fake namespace object","webpack://flippingbooksite/webpack/runtime/load script","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/analytics.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/service.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/storage/StorageProvider.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/storage/index.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/formatDateForServer.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/index.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/load.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/parseWsDate.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/parsers/paymentInfo.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/throttle.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/try-parse-date.ts","webpack://flippingbooksite/./node_modules/@flippingbook/web.utils/src/util/wait.ts","webpack://flippingbooksite/./sources/src/components/go-trial-button.ts","webpack://flippingbooksite/./sources/src/components/animated-element.ts","webpack://flippingbooksite/./sources/src/components/calendly-button/base/index.ts","webpack://flippingbooksite/./sources/src/components/calendly-button/fbo/index.ts","webpack://flippingbooksite/./sources/src/services/intersector.ts","webpack://flippingbooksite/./sources/src/components/hidden.ts","webpack://flippingbooksite/./sources/src/components/image.ts","webpack://flippingbooksite/./sources/src/pages/custom-domain/first-screen.ts","webpack://flippingbooksite/./sources/src/util/run-once-on-intersect.ts","webpack://flippingbooksite/./sources/src/pages/custom-domain/marketing.ts","webpack://flippingbooksite/./sources/src/pages/custom-domain/index.ts","webpack://flippingbooksite/./sources/src/services/analytics.ts","webpack://flippingbooksite/./sources/src/services/instance/analytics.ts","webpack://flippingbooksite/./sources/src/services/CTAanalytics.ts","webpack://flippingbooksite/./sources/src/services/instance/cta-analytics.ts","webpack://flippingbooksite/./sources/src/services/instance/siteAntispamService.ts","webpack://flippingbooksite/./sources/src/util/get-login-consumer.ts","webpack://flippingbooksite/./sources/src/util/image.ts","webpack://flippingbooksite/./sources/src/util/is-logged-in.ts","webpack://flippingbooksite/external var \"{\\\"featureFlags\\\":{},\\\"sentryDsn\\\":\\\"https://8fa71d45f6aa4a06be961166e0ee495b@sentry.io/1359544\\\",\\\"sentryEnable\\\":false}\"","webpack://flippingbooksite/webpack/bootstrap","webpack://flippingbooksite/webpack/runtime/amd options","webpack://flippingbooksite/webpack/runtime/compat get default export","webpack://flippingbooksite/webpack/runtime/define property getters","webpack://flippingbooksite/webpack/runtime/ensure chunk","webpack://flippingbooksite/webpack/runtime/get javascript chunk filename","webpack://flippingbooksite/webpack/runtime/get mini-css chunk filename","webpack://flippingbooksite/webpack/runtime/global","webpack://flippingbooksite/webpack/runtime/hasOwnProperty shorthand","webpack://flippingbooksite/webpack/runtime/make namespace object","webpack://flippingbooksite/webpack/runtime/node module decorator","webpack://flippingbooksite/webpack/runtime/runtimeId","webpack://flippingbooksite/webpack/runtime/publicPath","webpack://flippingbooksite/webpack/runtime/css loading","webpack://flippingbooksite/webpack/runtime/jsonp chunk loading","webpack://flippingbooksite/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"flippingbooksite:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import type { IFbAnalytics } from './fb-analytics';\nimport type { Product } from './ProductsList';\nimport { Parametrized } from './service';\nimport type { UserInfo } from './user';\nimport { wait } from './util';\n\ndeclare global {\n    interface Window {\n        fbAnalytics?: IFbAnalytics;\n    }\n}\n\nexport interface IAnalyticsService {\n    event(\n        eventName: string,\n        eventData: IAnalyticsService.EventData,\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\n    ): Promise<void>;\n    gaEvent(eventName: string, properties?: Record<string, unknown>): Promise<void>;\n    identify(user: UserInfo): Promise<void>;\n    clearIdentify(): Promise<void>;\n    alias(user: UserInfo): Promise<void>;\n    formatDate(date: Date): string;\n    pageView(eventData?: IAnalyticsService.EventData): Promise<void>;\n    trackSignup(params: IAnalyticsService.TrackSignupParams): Promise<void>;\n    update(user: UserInfo): Promise<void>;\n    writeToUserProfile(params: IAnalyticsService.EventData): Promise<void>;\n    writeToUserProfileOnce(params: IAnalyticsService.EventData): Promise<void>;\n    incrementUserProfileKey(props: IAnalyticsService.IncrementEventData): Promise<void>;\n    optOut(params: Partial<IAnalyticsService.OptOutParams>): void;\n}\n\nexport namespace IAnalyticsService {\n    export interface TrackSignupParams {\n        user: UserInfo;\n        method: string;\n        product: Product;\n        captchaAttempts?: number;\n        locale: string;\n        pageLocale: string;\n    }\n\n    export interface GtagEventParams {\n        non_interaction?: boolean;\n    }\n\n    export interface EventData {\n        [key: string]: string | number | string[] | number[];\n    }\n\n    export interface IncrementEventData {\n        prop: string;\n        value?: number;\n        /**\n         * @deprecated Use await or .then() instead\n         */\n        callback?: () => void;\n    }\n\n    export interface OptOutParams {\n        ga: boolean;\n        mixpanel: boolean;\n        bing: boolean;\n        fb: boolean;\n    }\n}\n\nconst GA_EVENT_TIMEOUT = 350;\nconst MIXPANEL_LOADED_TIMEOUT = 3000;\nconst MIXPANEL_EVENT_TIMEOUT = 350;\n\nfunction getGAEventCommonParams() {\n    return {\n        page_title: document.title,\n        page_path: window.location.pathname,\n        page_location: window.location.href,\n    };\n}\n\nexport class AnalyticsService extends Parametrized<AnalyticsService.Params> implements IAnalyticsService {\n    protected optOutState: IAnalyticsService.OptOutParams;\n\n    constructor(params: AnalyticsService.Params) {\n        super(params);\n\n        const { bing = false, fb = false, ga = false, mixpanel = false } = params.optOut || {};\n\n        this.optOutState = {\n            bing,\n            fb,\n            ga,\n            mixpanel,\n        };\n    }\n\n    async event(\n        eventName: string,\n        eventData: IAnalyticsService.EventData,\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\n    ): Promise<void> {\n        const gaId = this.getGaId();\n\n        // Track with mixpanel\n        const mixpanelPromise = this.mixpanelTrack(eventName, {\n            'GA Client ID': gaId,\n            ...eventData,\n        });\n\n        const fbAnalyticsPromise = this.withFbAnalytics((fbAnalytics) =>\n            fbAnalytics.send(eventName, {\n                'GA Client ID': gaId,\n                ...eventData,\n            }),\n        );\n\n        // Google Analytics\n        void this.gaEvent(eventName, {\n            category: 'mixpanel',\n            ...eventData,\n            ...gtagEventParams,\n        });\n\n        // Bing Ads\n        if (!this.optOutState.bing) {\n            const bing = 'uetq' in window ? uetq : [];\n            bing.push({\n                el: eventName, // Event label\n                ev: eventData.value || 0, // Event value\n            });\n        }\n\n        await Promise.allSettled([mixpanelPromise, fbAnalyticsPromise]);\n    }\n\n    private mixpanelTrack(eventName: string, properties?: Record<string, unknown>) {\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.track(eventName, properties, resolve)),\n            ]);\n        });\n    }\n\n    // Google Analytics v4\n    gaEvent(eventName: string, properties?: Record<string, unknown>): Promise<void> {\n        return new Promise((resolve) => {\n            const timeout = setTimeout(() => {\n                clearTimeout(timeout);\n                resolve();\n            }, GA_EVENT_TIMEOUT);\n\n            const opts = {\n                ...getGAEventCommonParams(),\n                non_interaction: false,\n                event_callback: () => {\n                    clearTimeout(timeout);\n                    resolve();\n                },\n                ...properties,\n            };\n\n            void this.withGtag((gtag) => gtag('event', eventName, opts));\n        });\n    }\n\n    formatDate(date: Date): string {\n        return `${date.getUTCFullYear()}-${date.getUTCMonth() + 1}-${date.getUTCDate()}`;\n    }\n\n    pageView(eventData?: IAnalyticsService.EventData) {\n        return this.withGtag((gtag) => {\n            const commonParams = getGAEventCommonParams();\n\n            gtag('set', commonParams);\n            gtag('event', 'page_view', {\n                ...commonParams,\n                ...(eventData && {\n                    ...eventData,\n                }),\n            });\n        });\n    }\n\n    private gaIdentify(user: UserInfo) {\n        return this.withGtag((gtag) => {\n            gtag('set', {\n                user_id: user.Id,\n                dimension2: 'Member',\n            });\n\n            return this.gaEvent('Registration Tracking', {\n                non_interaction: true,\n            });\n        });\n    }\n\n    private mixpanelSetBaseFields(user: UserInfo) {\n        return this.writeToUserProfileOnce({\n            ssouid: user.Id,\n            $email: user.Email,\n            ...(user.FirstName && {\n                $first_name: user.FirstName,\n            }),\n            ...(user.LastName && {\n                $last_name: user.LastName,\n            }),\n        });\n    }\n\n    private mixpanelIdentify(user: UserInfo) {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.identify(String(user.Id));\n            return this.mixpanelSetBaseFields(user);\n        });\n    }\n\n    private mixpanelAlias(user: UserInfo) {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.alias(String(user.Id));\n            return this.mixpanelSetBaseFields(user);\n        });\n    }\n\n    private fbAnalyticsIdentify(user: UserInfo) {\n        return this.withFbAnalytics((fbAnalytics) => fbAnalytics.setSsoId(user.Id));\n    }\n\n    async identify(user: UserInfo) {\n        await Promise.all([this.mixpanelIdentify(user), this.gaIdentify(user), this.fbAnalyticsIdentify(user)]);\n    }\n\n    private clearGAIdentify() {\n        return this.withGtag((gtag) => {\n            gtag('set', {\n                dimension2: 'Guest',\n            });\n\n            return this.gaEvent('Registration Tracking', {\n                non_interaction: true,\n            });\n        });\n    }\n\n    private clearMixpanelIdentify() {\n        return this.withMixpanel((mixpanel) => {\n            mixpanel.reset();\n        });\n    }\n\n    private clearFbAnalyticsIdentify() {\n        return this.withFbAnalytics((fbAnalytics) => {\n            fbAnalytics.clear();\n        });\n    }\n\n    async clearIdentify() {\n        await Promise.all([this.clearMixpanelIdentify(), this.clearGAIdentify(), this.clearFbAnalyticsIdentify()]);\n    }\n\n    async alias(user: UserInfo) {\n        await Promise.all([this.mixpanelAlias(user), this.gaIdentify(user)]);\n    }\n\n    update(user: UserInfo) {\n        return this.writeToUserProfile({\n            ssouid: user.Id,\n            $email: user.Email,\n            ...(user.FirstName && {\n                $first_name: user.FirstName,\n            }),\n            ...(user.LastName && {\n                $last_name: user.LastName,\n            }),\n        });\n    }\n\n    async trackSignup(params: IAnalyticsService.TrackSignupParams) {\n        const { user, product, method, locale, pageLocale, captchaAttempts = 0 } = params;\n\n        await this.event('First Registration', {\n            'Registration Method': method,\n            InitialProduct: product,\n            ssouid: String(user.Id),\n            'Captcha Tries Count': String(captchaAttempts),\n            'Previous Page Localization':\n                locale === pageLocale ? `Full ${locale.toUpperCase()}` : `Partly ${locale.toUpperCase()}`,\n        });\n\n        await this.identify(user);\n    }\n\n    writeToUserProfile(params: IAnalyticsService.EventData): Promise<void> {\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.people.set(params, resolve)),\n            ]);\n        });\n    }\n\n    private async getLoadedMixpanel() {\n        if ('mixpanelLoaded' in window) {\n            return Promise.race([wait(MIXPANEL_LOADED_TIMEOUT), mixpanelLoaded.promise]);\n        }\n\n        return undefined;\n    }\n\n    writeToUserProfileOnce(params: IAnalyticsService.EventData): Promise<void> {\n        return this.withMixpanel(async (mixpanel) => {\n            const loadedMixpanel = await this.getLoadedMixpanel();\n\n            const properties = Object.keys(params).reduce<IAnalyticsService.EventData>((acc, propertyName) => {\n                const propertyValueFromMixPanel = loadedMixpanel\n                    ? loadedMixpanel.get_property(propertyName)\n                    : undefined;\n\n                return {\n                    ...acc,\n                    [propertyName]:\n                        propertyValueFromMixPanel === undefined ? params[propertyName] : propertyValueFromMixPanel,\n                };\n            }, {});\n\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => (loadedMixpanel || mixpanel).people.set_once(properties, resolve)),\n            ]);\n        });\n    }\n\n    incrementUserProfileKey(props: IAnalyticsService.IncrementEventData): Promise<void> {\n        const { prop, value, callback = () => {} } = props;\n\n        return this.withMixpanel((mixpanel) => {\n            return Promise.race([\n                wait(MIXPANEL_EVENT_TIMEOUT),\n                new Promise<void>((resolve) => mixpanel.people.increment(prop, value, resolve)),\n            ]).then(() => callback());\n        });\n    }\n\n    private withGtag(cb: (gtag: Gtag.Gtag) => void | Promise<void>): Promise<void> {\n        if (!this.optOutState.ga && this.hasGtag()) {\n            return Promise.resolve(cb(gtag));\n        }\n        return Promise.resolve();\n    }\n\n    private withMixpanel(cb: (mixpanel: Mixpanel) => void | Promise<void>): Promise<void> {\n        if (!this.optOutState.mixpanel && 'mixpanel' in window) {\n            return Promise.resolve(cb(mixpanel));\n        }\n        return Promise.resolve();\n    }\n\n    private withFbAnalytics(cb: (fbAnalytics: IFbAnalytics) => void | Promise<void>): Promise<void> {\n        const fb = window?.fbAnalytics;\n\n        if (fb) {\n            return Promise.resolve(cb(fb));\n        }\n        return Promise.resolve();\n    }\n\n    private getGaId() {\n        if ('gaGlobal' in window && !!gaGlobal) {\n            try {\n                return JSON.parse(gaGlobal.vid) as string;\n            } catch {\n                // skip\n            }\n        }\n\n        if (document && 'cookie' in document) {\n            const gaCookie = document.cookie\n                .split(';')\n                .map((c) => c.replace(/\\s/g, '').split('=', 2))\n                .find((c) => c[0] === '_ga');\n            if (gaCookie) {\n                const pattern = 'GAx.y.';\n                return gaCookie[1].substring(pattern.length);\n            }\n        }\n\n        return '';\n    }\n\n    private hasGtag() {\n        return typeof gtag === 'function';\n    }\n\n    optOut(params: Partial<IAnalyticsService.OptOutParams>) {\n        this.optOutState = {\n            ...this.optOutState,\n            ...params,\n        };\n    }\n}\n\nexport namespace AnalyticsService {\n    export interface Params {\n        optOut?: Partial<IAnalyticsService.OptOutParams>;\n    }\n}\n","import { readonly } from './types';\n\nexport interface IService {\n    listen(cb: () => void): void;\n    unlisten(cb: () => void): void;\n}\n\nexport abstract class Listenable {\n    private readonly listeners = new Set<() => void>();\n\n    listen(cb: () => void) {\n        this.listeners.add(cb);\n    }\n\n    unlisten(cb: () => void) {\n        this.listeners.delete(cb);\n    }\n\n    protected notify() {\n        this.listeners.forEach((l) => l());\n    }\n}\n\nexport abstract class Parametrized<P> {\n    protected params: P;\n\n    constructor(params: P) {\n        this.params = params;\n    }\n}\n\nexport abstract class ListenableParametrized<P> extends Listenable {\n    protected params: P;\n\n    constructor(params: P) {\n        super();\n        this.params = params;\n    }\n}\n\nexport interface IServiceDataStorage<T> extends IService {\n    getData(): Readonly<T> | null;\n    updateData(update: T): Readonly<T>;\n    overwriteData(newData: T | null): Readonly<T> | null;\n}\n\nexport class ServiceDataStorage<T> extends Listenable implements IServiceDataStorage<T> {\n    private data: Readonly<T> | null = null;\n\n    getData(): Readonly<T> | null {\n        return this.data === null ? null : readonly(this.data);\n    }\n\n    updateData(update: T): Readonly<T> {\n        this.data = {\n            ...(this.data || {}),\n            ...update,\n        };\n        this.notify();\n        return readonly(this.data);\n    }\n\n    overwriteData(newData: T | null): Readonly<T> | null {\n        this.data = newData;\n        this.notify();\n        return this.data === null ? null : readonly(this.data);\n    }\n}\n\nexport abstract class AbstractService<T extends object, P = Record<string, unknown>>\n    extends ListenableParametrized<P & { serviceStorage?: IServiceDataStorage<T> }>\n    implements IService\n{\n    protected storage: IServiceDataStorage<T>;\n\n    constructor(params: P & { serviceStorage?: IServiceDataStorage<T> }) {\n        super(params);\n\n        this.storage = params.serviceStorage ?? new ServiceDataStorage<T>();\n        this.storage.listen(() => this.notify());\n    }\n\n    protected get data(): Readonly<T> | null {\n        return this.storage.getData();\n    }\n\n    protected updateData(update: T): Readonly<T> {\n        return this.storage.updateData(update);\n    }\n\n    protected overwriteData(newData: T | null): Readonly<T> | null {\n        return this.storage.overwriteData(newData);\n    }\n}\n","import type { IStorageProvider } from './IStorageProvider';\n\ntype StorageType = 'sessionStorage' | 'localStorage';\n\nclass RealStorage implements IStorageProvider {\n    private baseObj: Storage;\n\n    constructor(baseObj: Storage) {\n        this.baseObj = baseObj;\n    }\n\n    get(key: string) {\n        return this.baseObj.getItem(key);\n    }\n\n    set(key: string, value: string) {\n        return this.baseObj.setItem(key, value);\n    }\n\n    remove(key: string) {\n        return this.baseObj.removeItem(key);\n    }\n\n    clear() {\n        return this.baseObj.clear();\n    }\n\n    getJSON<T>(key: string): T | null {\n        const val = this.get(key);\n        if (val) {\n            return JSON.parse(val) as T;\n        }\n        return null;\n    }\n\n    setJSON(key: string, value: unknown) {\n        return this.set(key, JSON.stringify(value));\n    }\n}\n\nclass ObjectStorage implements IStorageProvider {\n    private data: { [id: string]: string } = {};\n\n    get(key: string) {\n        return this.data[key];\n    }\n\n    set(key: string, value: string) {\n        this.data[key] = value;\n    }\n\n    remove(key: string) {\n        delete this.data[key];\n    }\n\n    clear() {\n        this.data = {};\n    }\n\n    getJSON<T>(key: string): T | null {\n        const val = this.get(key);\n        if (val) {\n            return JSON.parse(val) as T;\n        }\n        return null;\n    }\n\n    setJSON(key: string, value: unknown) {\n        return this.set(key, JSON.stringify(value));\n    }\n}\n\nconst isStorageSupported = (storage: StorageType) => {\n    try {\n        window[storage].setItem('test-storage-supported', '1');\n        window[storage].removeItem('test-storage-supported');\n        return true;\n    } catch {\n        return false;\n    }\n};\n\nconst getStorage = (storage: StorageType) => {\n    return isStorageSupported(storage) ? new RealStorage(window[storage]) : new ObjectStorage();\n};\n\nexport const localStorage: IStorageProvider = getStorage('localStorage');\nexport const sessionStorage: IStorageProvider = getStorage('sessionStorage');\nexport const objectStorage: IStorageProvider = new ObjectStorage();\n","export { IStorageProvider } from './IStorageProvider';\nexport { localStorage, sessionStorage, objectStorage } from './StorageProvider';\n","export function formatDateForServer(date: Date): string {\n    return date.toISOString();\n}\n\nexport function formatDateForServerShort(date: Date): string {\n    return date.toISOString().replace(/T.*$/, '');\n}\n\nexport function formatStartDate(date: Date): string {\n    const utcLikeLocal = new Date(\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate(),\n        0,\n        date.getTimezoneOffset() * -1,\n    );\n    return formatDateForServerShort(utcLikeLocal);\n}\n\nexport function formatEndDate(date: Date): string {\n    const nextDay = new Date(\n        date.getUTCFullYear(),\n        date.getUTCMonth(),\n        date.getUTCDate() + 1,\n        0,\n        date.getTimezoneOffset() * -1,\n    );\n    return formatDateForServerShort(nextDay);\n}\n","import parseWsDate from './parseWsDate';\n\nexport { loadCss, loadJs } from './load';\nexport { parsePaymentInfo } from './parsers/paymentInfo';\nexport { formatDateForServer } from './formatDateForServer';\nexport { wait } from './wait';\nexport { throttle } from './throttle';\n\nexport { parseWsDate };\n","const EXTERNAL_URL_REGEX = /^https?:/;\n\nconst contentUrl = (contentRoot: string, src: string) =>\n    EXTERNAL_URL_REGEX.test(src) ? src : contentRoot + (src.charAt(0) === '/' ? src : `/${src}`);\n\nexport const loadJs = (contentRoot: string) => (src: string) =>\n    new Promise<void>((resolve, reject) => {\n        const scriptTag = document.createElement('script');\n        scriptTag.addEventListener('load', () => resolve());\n        // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n        scriptTag.addEventListener('error', () => reject());\n        scriptTag.setAttribute('src', contentUrl(contentRoot, src));\n        document.head.appendChild(scriptTag);\n    });\n\nexport const loadCss = (contentRoot: string) => (src: string) =>\n    new Promise<void>((resolve, reject) => {\n        const linkTag = document.createElement('link');\n        linkTag.setAttribute('rel', 'stylesheet');\n        linkTag.addEventListener('load', () => resolve());\n        // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n        linkTag.addEventListener('error', () => reject());\n        linkTag.setAttribute('href', contentUrl(contentRoot, src));\n        document.head.appendChild(linkTag);\n    });\n","const parseWsDate = (wsDate: string | Date | null): Date | null => {\n    if (!wsDate) {\n        return null;\n    }\n    if (wsDate instanceof Date) {\n        return wsDate;\n    }\n    try {\n        return new Date(parseInt(wsDate.substring(6), 10));\n    } catch {\n        return null;\n    }\n};\n\nexport default parseWsDate;\n","import type { PaymentInfo as PaymentInfoJson } from '../../apis/payments';\nimport type { PaymentInfo } from '../../subscriptions';\nimport { tryParseDate } from '../try-parse-date';\n\nexport const parsePaymentInfo = (payment: PaymentInfoJson): PaymentInfo => {\n    return {\n        ...payment,\n        LastUpdate: tryParseDate(payment.LastUpdate ? payment.LastUpdate : ''),\n        Items: payment.Items.map(parsePaymentInfo),\n    };\n};\n","export const throttle = <T extends unknown[]>(callback: (...args: T) => unknown, delay?: number) => {\n    let shouldWait = false;\n\n    return (...args: T) => {\n        if (!shouldWait) {\n            callback(...args);\n\n            shouldWait = true;\n\n            setTimeout(() => {\n                shouldWait = false;\n            }, delay);\n        }\n    };\n};\n","export function tryParseDate(dateString: string): Date | null {\n    if (!Number.isNaN(Date.parse(dateString))) {\n        return new Date(dateString);\n    }\n    return null;\n}\n","export const wait = (timeout: number) => new Promise<void>((resolve) => setTimeout(resolve, timeout));\n","import { BemBlock, BemElement } from '../pages/bem';\r\nimport type { CTAAnalyticsService } from '../services/CTAanalytics';\r\nimport { ctaAnalytics } from '../services/instance/cta-analytics';\r\nimport { serviceLocator } from '../services/instance/serviceLocator';\r\nimport { siteAntispamService } from '../services/instance/siteAntispamService';\r\nimport { getLoginConsumer } from '../util/get-login-consumer';\r\nimport { isLoggedIn } from '../util/is-logged-in';\r\nimport { runWithNewTask } from '../util/run-with-new-task';\r\n\r\nfunction goToUrlOnNextTask(url: string) {\r\n    // transition to the page should be performed after all other events\r\n    // Example: sending analytics\r\n    setTimeout(() => {\r\n        window.location.href = url;\r\n    }, 0);\r\n}\r\n\r\nasync function getLink(product: string, direction: string | null) {\r\n    const loggedIn = isLoggedIn();\r\n\r\n    const [baseRegisterUrl] = await serviceLocator.resolve({\r\n        subsystem: 'generic',\r\n        service: 'logon-register-ui',\r\n    });\r\n    const consumer = getLoginConsumer();\r\n    const userDetachedContext = siteAntispamService.getUserDetachedContext();\r\n    const registerUrl = `${baseRegisterUrl}?r=${consumer}&t=both&asc=${userDetachedContext}`;\r\n\r\n    if (product === 'fb-online') {\r\n        return !loggedIn ? `${registerUrl}&products=FBOnline` : '/account/online';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'auto') {\r\n        return !loggedIn\r\n            ? `${registerUrl}&products=Publisher2&resume-url=${window.encodeURIComponent(\r\n                  `${window.location.origin}/downloads?autostart=true`,\r\n              )}`\r\n            : '/downloads?autostart=true';\r\n    }\r\n\r\n    if (product === 'fb-publisher' && direction === 'account') {\r\n        return '/account/software';\r\n    }\r\n\r\n    if (product === 'fb-publisher') {\r\n        return '/downloads';\r\n    }\r\n\r\n    if (product === 'fb-server') {\r\n        return '/automation';\r\n    }\r\n\r\n    if (loggedIn) {\r\n        return '/account/autonav';\r\n    }\r\n\r\n    return '/account/signup';\r\n}\r\n\r\nexport class GoTrialButton extends BemElement<GoTrialButton.Params> {\r\n    private direction = this.el.getAttribute('data-direction');\r\n    private product = this.el.getAttribute('data-product') || 'fb-online';\r\n\r\n    public onDescribe() {\r\n        this.el.addEventListener('click', (ev) => {\r\n            void this.onLinkClick(ev);\r\n        });\r\n    }\r\n\r\n    private sendAnalytics = () => {\r\n        return ctaAnalytics.send(this.params.position);\r\n    };\r\n\r\n    private onLinkClick = async (ev: Event) => {\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n\r\n        await runWithNewTask(() => this.sendAnalytics());\r\n\r\n        const newLink = await getLink(this.product, this.direction);\r\n        goToUrlOnNextTask(newLink);\r\n    };\r\n}\r\nexport namespace GoTrialButton {\r\n    export interface Params {\r\n        position: CTAAnalyticsService.Position;\r\n    }\r\n}\r\n\r\nexport const GoTrialButtonWrapper = (blockName: string) =>\r\n    class GoTrialButtonWrapper extends BemBlock<GoTrialButton.Params> {\r\n        protected blockName(): string {\r\n            return blockName;\r\n        }\r\n\r\n        onDescribe() {\r\n            this.describeElement('go-trial', GoTrialButton, this.params);\r\n        }\r\n    };\r\n","import { BemElement } from '../pages/bem';\r\n\r\nconst animationEvent = {\r\n    animation: 'animationend',\r\n    transition: 'transitionend',\r\n};\r\n\r\nconst DEFAULT_ANIMATE_CLASS = 'animate';\r\n\r\nexport class AnimatedElement extends BemElement<AnimatedElement.Params> {\r\n    private clearClass(className: string) {\r\n        this.applyModifiers({ [className]: false });\r\n    }\r\n\r\n    animate(className = DEFAULT_ANIMATE_CLASS): Promise<() => void> {\r\n        const eventName = animationEvent[this.params.animationType];\r\n\r\n        return new Promise((resolve) => {\r\n            const onAnimationEnd = () => {\r\n                this.el.removeEventListener(eventName, onAnimationEnd);\r\n                requestAnimationFrame(() => resolve(() => this.clearClass(className)));\r\n            };\r\n\r\n            this.el.addEventListener(eventName, onAnimationEnd);\r\n\r\n            requestAnimationFrame(() => this.applyModifiers({ [className]: true }));\r\n        });\r\n    }\r\n}\r\n\r\nnamespace AnimatedElement {\r\n    export interface Params {\r\n        animationType: 'transition' | 'animation';\r\n    }\r\n}\r\n","import { BemElement } from '../../../pages/bem';\r\n\r\nimport './style.css';\r\n\r\nexport abstract class CalendlyButton extends BemElement {\r\n    onDescribe() {}\r\n}\r\n","import { CalendlyButton } from '../base';\r\n\r\nimport './style.css';\r\n\r\nexport class CalendlyButtonFBO extends CalendlyButton {}\r\n","import { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class SingleElementIntersector extends Parametrized<SingleElementIntersector.Params> {\r\n    private intersector: IntersectionObserver;\r\n\r\n    private observerCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) =>\r\n        entries.forEach((entry) => this.params.onIntersectionChange(entry, observer));\r\n\r\n    constructor(params: SingleElementIntersector.Params) {\r\n        super(params);\r\n        this.intersector = new IntersectionObserver(this.observerCallback, params);\r\n    }\r\n\r\n    observe() {\r\n        this.intersector.observe(this.params.el);\r\n    }\r\n\r\n    unobserve() {\r\n        this.intersector.unobserve(this.params.el);\r\n    }\r\n}\r\n\r\nexport namespace SingleElementIntersector {\r\n    export interface Params extends IntersectionObserverInit {\r\n        el: HTMLElement;\r\n        onIntersectionChange: (entry: IntersectionObserverEntry, observer: IntersectionObserver) => void;\r\n    }\r\n}\r\n","import { BemElement } from '../pages/bem';\r\nimport type { BemBlock } from '../pages/bem';\r\nimport { SingleElementIntersector } from '../services/intersector';\r\n\r\nexport class HiddenElement<P extends HiddenElement.Params = Record<string, never>> extends BemElement<P> {\r\n    private shown = false;\r\n\r\n    show() {\r\n        this.shown = true;\r\n        this.applyModifiers();\r\n        this.params.onShow?.();\r\n    }\r\n\r\n    protected applyModifiers(modifiers: BemBlock.ModifiersMap = {}) {\r\n        return super.applyModifiers({ ...modifiers, shown: this.shown });\r\n    }\r\n}\r\n\r\nexport namespace HiddenElement {\r\n    export interface Params {\r\n        onShow?: () => void;\r\n    }\r\n}\r\n\r\nexport class AnimatedHiddenElement<P extends AnimatedHiddenElement.Params> extends HiddenElement<P> {\r\n    private animated = false;\r\n    private reducedMotionMode: boolean = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n        if (this.reducedMotionMode) {\r\n            return;\r\n        }\r\n        new SingleElementIntersector({\r\n            el: this.el,\r\n            onIntersectionChange: (entry) => this.onIntersectionChange(entry),\r\n            threshold: [0, this.treshold()],\r\n        }).observe();\r\n        if (this.params.onTransitionEnd) {\r\n            this.el.addEventListener('transitionend', this.params.onTransitionEnd);\r\n        }\r\n    }\r\n\r\n    protected applyModifiers(modifiers: BemBlock.ModifiersMap = {}) {\r\n        return super.applyModifiers({ ...modifiers, animated: this.animated });\r\n    }\r\n\r\n    private onIntersectionChange(entry: IntersectionObserverEntry) {\r\n        if (entry.isIntersecting && entry.intersectionRatio >= this.treshold()) {\r\n            this.onShown();\r\n        } else {\r\n            this.onHidden(entry);\r\n        }\r\n    }\r\n\r\n    private onShown() {\r\n        this.animate();\r\n        if (this.params.onScrollIn) {\r\n            this.params.onScrollIn();\r\n        }\r\n    }\r\n\r\n    private onHidden(entry: IntersectionObserverEntry): void {\r\n        if (entry.boundingClientRect.top < 0) {\r\n            this.animate();\r\n        }\r\n        this.params.onScrollOut?.();\r\n    }\r\n\r\n    private animate() {\r\n        this.animated = true;\r\n        this.applyModifiers();\r\n        this.params.onAnimate?.();\r\n    }\r\n\r\n    protected treshold(): number {\r\n        return this.params.treshold || 0;\r\n    }\r\n}\r\n\r\nexport namespace AnimatedHiddenElement {\r\n    export interface Params extends HiddenElement.Params {\r\n        onTransitionEnd?: (e: TransitionEvent) => void;\r\n        onScrollOut?: () => void;\r\n        onScrollIn?: () => void;\r\n        onAnimate?: () => void;\r\n        treshold?: number;\r\n    }\r\n}\r\n","import { BemBlock, BemElement } from '../pages/bem';\r\n\r\nimport { AnimatedHiddenElement } from './hidden';\r\n\r\nclass GenericLoadableImage<P extends LoadableImage.Params> extends BemElement<P, HTMLImageElement> {\r\n    private imageLoaded = false;\r\n\r\n    private onLoad = () => {\r\n        this.imageLoaded = true;\r\n        this.params.onLoad();\r\n    };\r\n\r\n    onDescribe() {\r\n        if (this.el.complete) {\r\n            this.onLoad();\r\n            return;\r\n        }\r\n\r\n        this.el.addEventListener('load', this.onLoad);\r\n    }\r\n\r\n    /**\r\n    IE 10 ignores onload event for some reason.\r\n    This method is used as a last resort fallback to show image from `BlockWithPicture`\r\n    @see {BlockWithPicture}\r\n    */\r\n    forceCheckCompletion() {\r\n        if (!this.imageLoaded && this.el.complete) {\r\n            this.onLoad();\r\n        }\r\n    }\r\n}\r\n\r\nexport namespace LoadableImage {\r\n    export interface Params {\r\n        onLoad: () => void;\r\n    }\r\n}\r\n\r\nexport class LoadableImage extends GenericLoadableImage<LoadableImage.Params> {}\r\n\r\nexport class HiddenLoadableImage extends LoadableImage {\r\n    constructor(el: HTMLImageElement, elementName: string, elementClassName: string) {\r\n        super(el, elementName, elementClassName, {\r\n            onLoad: () => this.show(),\r\n        });\r\n    }\r\n\r\n    private show() {\r\n        this.applyModifiers({ shown: true });\r\n    }\r\n}\r\n\r\nexport abstract class BlockWithPicture<\r\n    P extends BlockWithPicture.Params = Record<string, never>,\r\n    E extends HTMLElement = HTMLElement,\r\n> extends BemBlock<P, E> {\r\n    protected abstract pictureElement(): string;\r\n    protected abstract containerElement(): string;\r\n\r\n    protected container = this.describeElement(this.containerElement(), AnimatedHiddenElement, {\r\n        onTransitionEnd: this.params.onTransitionEnd,\r\n        onScrollOut: this.params.onScrollOut,\r\n        treshold: this.animationTreshold(),\r\n        // We check image completion when it comes into viewport so it fires it's `onLoad` handler if loaded.\r\n        // This is a workaround for IE10 ignoring image's `onload` event.\r\n        onScrollIn: () => this.picture.forceCheckCompletion(),\r\n    });\r\n\r\n    protected picture = this.describeElement(this.pictureElement(), LoadableImage, {\r\n        onLoad: () => this.container.show(),\r\n    });\r\n\r\n    protected animationTreshold(): number {\r\n        return 0.5;\r\n    }\r\n}\r\n\r\nexport namespace BlockWithPicture {\r\n    export interface Params {\r\n        onTransitionEnd?: (e: TransitionEvent) => void;\r\n        onScrollOut?: () => void;\r\n    }\r\n}\r\n","import { AnimatedElement } from '../../components/animated-element';\r\nimport { CalendlyButtonFBO } from '../../components/calendly-button/fbo';\r\nimport { LoadableImage } from '../../components/image';\r\nimport { BemBlock } from '../bem';\r\n\r\nclass Address extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Domain-First-Screen-Address';\r\n    }\r\n\r\n    animateText() {\r\n        this.applyModifiers({\r\n            'animate-text': true,\r\n        });\r\n    }\r\n}\r\n\r\nexport class FirstScreen extends BemBlock {\r\n    protected blockName(): string {\r\n        return 'S-Domain-First-Screen';\r\n    }\r\n\r\n    onDescribe() {\r\n        const calendlyName = 'calendly';\r\n\r\n        if (this.element(calendlyName)) {\r\n            this.describeElement(calendlyName, CalendlyButtonFBO, {});\r\n        }\r\n\r\n        const addressWrapper = this.describeElement('address', AnimatedElement, {\r\n            animationType: 'animation',\r\n        });\r\n\r\n        const address = this.describeBlock('address', Address, {});\r\n\r\n        const startAnimation = async () => {\r\n            await addressWrapper.animate();\r\n            address.animateText();\r\n        };\r\n\r\n        this.describeElement('preview-image', LoadableImage, {\r\n            onLoad: () => {\r\n                void startAnimation();\r\n            },\r\n        });\r\n    }\r\n}\r\n","import { SingleElementIntersector } from '../services/intersector';\r\n\r\nimport { runWithNewTask } from './run-with-new-task';\r\n\r\nconst blockThreshold = [0, 1];\r\n\r\ninterface Params {\r\n    el: HTMLElement;\r\n    fn: () => void | Promise<void>;\r\n    threshold?: number | number[];\r\n    rootMargin?: string;\r\n}\r\n\r\nexport function runOnceOnIntersect(params: Params) {\r\n    const { el, fn, threshold, rootMargin = '0px' } = params;\r\n\r\n    const intersector = new SingleElementIntersector({\r\n        onIntersectionChange: (entry: IntersectionObserverEntry) => {\r\n            if (entry.isIntersecting) {\r\n                intersector.unobserve();\r\n\r\n                void runWithNewTask(fn);\r\n            }\r\n        },\r\n        threshold: threshold || blockThreshold,\r\n        el,\r\n        rootMargin,\r\n    });\r\n    intersector.observe();\r\n}\r\n","import { LoadableImage } from '../../components/image';\r\nimport { runOnceOnIntersect } from '../../util/run-once-on-intersect';\r\nimport { BemBlock, BemElement } from '../bem';\r\ninterface SimpleCloudsParams {\r\n    blockElement: BemBlock;\r\n    cloudNames: string[];\r\n    onReady: () => void;\r\n}\r\n\r\nclass SimpleClouds {\r\n    constructor(params: SimpleCloudsParams) {\r\n        const { blockElement, cloudNames, onReady } = params;\r\n\r\n        const cloudElements = cloudNames.map((cloudName) => blockElement.ensureElement(cloudName));\r\n\r\n        let readyCount = 0;\r\n\r\n        const markReady = () => {\r\n            readyCount += 1;\r\n\r\n            if (readyCount >= cloudElements.length) {\r\n                onReady();\r\n\r\n                cloudElements.forEach((cloudElement) => cloudElement.removeEventListener('transitionend', markReady));\r\n            }\r\n        };\r\n\r\n        cloudElements.forEach((cloudElement) => cloudElement.addEventListener('transitionend', markReady));\r\n    }\r\n}\r\nclass DomainCloud extends BemElement {\r\n    private readonly transitionsCount = 2;\r\n    private readyTransitionsCount = 0;\r\n\r\n    private markReadyTransition = () => {\r\n        this.readyTransitionsCount += 1;\r\n\r\n        if (this.readyTransitionsCount >= this.transitionsCount) {\r\n            this.applyModifiers({ hovering: true });\r\n            this.el.removeEventListener('transitionend', this.markReadyTransition);\r\n        }\r\n    };\r\n\r\n    onDescribe() {\r\n        this.el.addEventListener('transitionend', this.markReadyTransition);\r\n    }\r\n}\r\n\r\nexport class Marketing extends BemBlock {\r\n    protected blockName() {\r\n        return 'S-Domain-Marketing';\r\n    }\r\n\r\n    onDescribe() {\r\n        // eslint-disable-next-line no-new\r\n        new SimpleClouds({\r\n            blockElement: this,\r\n            cloudNames: ['cloud', 'cloud-reversed', 'small-cloud'],\r\n            onReady: () => requestAnimationFrame(() => this.applyModifiers({ 'simple-clouds-hovering': true })),\r\n        });\r\n\r\n        ['cloud-flipbooks', 'cloud-brochures', 'cloud-catalogs'].forEach((claudName) =>\r\n            this.describeElement(claudName, DomainCloud, {}),\r\n        );\r\n\r\n        const cloudsElementName = 'clouds';\r\n\r\n        runOnceOnIntersect({\r\n            el: this.ensureElement(cloudsElementName),\r\n            fn: () => {\r\n                this.describeElement('preview-image', LoadableImage, {\r\n                    onLoad: () => this.applyModifiers({ 'clouds-shown': true }),\r\n                });\r\n            },\r\n            threshold: 0.8,\r\n        });\r\n    }\r\n}\r\n","import '../../components/demo-wrapper';\r\nimport { BasePage } from '../../components/base-page';\r\nimport { GoTrialButtonWrapper } from '../../components/go-trial-button';\r\nimport './styles/index.css';\r\nimport { runWithNewTask } from '../../util/run-with-new-task';\r\n\r\nimport { FirstScreen } from './first-screen';\r\nimport { Marketing } from './marketing';\r\n\r\nclass CustomDomain extends BasePage {\r\n    protected blockName(): string {\r\n        return 'S-Domain';\r\n    }\r\n\r\n    onDescribe() {\r\n        super.onDescribe();\r\n\r\n        void runWithNewTask(() => this.describeBlock('first-screen', FirstScreen, {}));\r\n\r\n        void runWithNewTask(() =>\r\n            this.describeBlock('examples', GoTrialButtonWrapper(`${this.blockName()}-Examples`), {\r\n                position: 'middle',\r\n            }),\r\n        );\r\n\r\n        void runWithNewTask(() => this.describeBlock('marketing', Marketing, {}));\r\n    }\r\n}\r\n\r\nexport { CustomDomain as page };\r\n","import { AnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\nimport type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\n\r\nconst release = process.env.BUILD_DATE || 'local';\r\n\r\nexport class SiteAnalyticsService extends AnalyticsService implements IAnalyticsService {\r\n    override gaEvent(eventName: string, properties?: Record<string, unknown>) {\r\n        return super.gaEvent(eventName, {\r\n            area: 'website',\r\n            release,\r\n            ...properties,\r\n        });\r\n    }\r\n\r\n    override event(\r\n        eventName: string,\r\n        eventData: IAnalyticsService.EventData,\r\n        gtagEventParams?: Partial<IAnalyticsService.GtagEventParams>,\r\n    ) {\r\n        return super.event(\r\n            eventName,\r\n            {\r\n                release,\r\n                ...eventData,\r\n            },\r\n            gtagEventParams,\r\n        );\r\n    }\r\n}\r\n","import type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\n\r\nimport { SiteAnalyticsService } from '../analytics';\r\n\r\nexport const analytics: IAnalyticsService = new SiteAnalyticsService({});\r\n","import type { IAnalyticsService } from '@flippingbook/web.utils/dist/analytics';\r\nimport { Parametrized } from '@flippingbook/web.utils/dist/service';\r\n\r\nexport class CTAAnalyticsService extends Parametrized<CTAAnalyticsService.Params> {\r\n    send(position: CTAAnalyticsService.Position) {\r\n        return this.params.analytics.gaEvent('button_click_trial', {\r\n            category: 'button',\r\n            button_location: position,\r\n        });\r\n    }\r\n}\r\n\r\nexport namespace CTAAnalyticsService {\r\n    export type Position = 'header' | 'mobile-menu' | 'top' | 'middle' | 'bottom';\r\n\r\n    export interface Params {\r\n        analytics: IAnalyticsService;\r\n    }\r\n}\r\n","import { CTAAnalyticsService } from '../CTAanalytics';\r\n\r\nimport { analytics } from './analytics';\r\n\r\nexport const ctaAnalytics = new CTAAnalyticsService({\r\n    analytics,\r\n});\r\n","export const siteAntispamService = {\r\n    getUserDetachedContext: () => window.__flippingbook_user_detached_context__,\r\n};\r\n","export function getLoginConsumer(): string {\r\n    return window.Mediaparts?.Bootstrap?.Params?.loginConsumer || 'site';\r\n}\r\n","function waitForImageLoad(image: HTMLImageElement) {\r\n    return new Promise<void>((resolve) => {\r\n        if (image.complete) {\r\n            resolve();\r\n            return;\r\n        }\r\n\r\n        const handleImageLoad = () => {\r\n            image.removeEventListener('load', handleImageLoad);\r\n            resolve();\r\n        };\r\n\r\n        image.addEventListener('load', handleImageLoad);\r\n    });\r\n}\r\n\r\nfunction getImageLoadList(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const selector = params.classNames.map((c) => `.${c}`).join(', ');\r\n    const container = params.container || document;\r\n    const imgElements = Array.from(container.querySelectorAll<HTMLImageElement>(selector));\r\n\r\n    return imgElements.map((imgElement) => waitForImageLoad(imgElement));\r\n}\r\n\r\nexport function waitForAllImagesLoad(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const loadList = getImageLoadList(params);\r\n    return Promise.all(loadList);\r\n}\r\n\r\nexport function waitForAnyImagesLoad(params: { container?: HTMLElement; classNames: string[] }) {\r\n    const loadList = getImageLoadList(params);\r\n    return Promise.race(loadList);\r\n}\r\n\r\nexport function setLoadedClassForImage() {\r\n    const imgElements = Array.from(document.querySelectorAll<HTMLImageElement>('img'));\r\n    const loadedClassName = 'loaded';\r\n\r\n    imgElements.forEach((imgElement) => {\r\n        if (imgElement.complete) {\r\n            imgElement.classList.add(loadedClassName);\r\n            return;\r\n        }\r\n\r\n        const handleImageLoad = () => {\r\n            imgElement.removeEventListener('load', handleImageLoad);\r\n            imgElement.classList.add(loadedClassName);\r\n        };\r\n\r\n        imgElement.addEventListener('load', handleImageLoad);\r\n    });\r\n}\r\n","import { localStorage, sessionStorage } from '@flippingbook/web.utils/dist/storage';\r\n\r\nexport function isLoggedIn() {\r\n    return Boolean(\r\n        (window.flippingbook.user && window.flippingbook.user.loggedIn) ||\r\n            sessionStorage.get('PA.TokenService.Token') ||\r\n            localStorage.get('FlippingBook.PA.DefaultProduct'),\r\n    );\r\n}\r\n","module.exports = {\"featureFlags\":{},\"sentryDsn\":\"https://8fa71d45f6aa4a06be961166e0ee495b@sentry.io/1359544\",\"sentryEnable\":false};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-bundle.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-bundle.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8127;","__webpack_require__.p = \"/content/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t952: 0,\n\t1392: 0,\n\t8127: 0,\n\t8571: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"957\":1,\"1597\":1,\"2989\":1,\"5515\":1,\"6783\":1,\"9974\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t952: 0,\n\t1392: 0,\n\t8127: 0,\n\t8571: 0,\n\t4514: 0,\n\t5949: 0,\n\t5908: 0,\n\t2577: 0,\n\t2688: 0,\n\t5545: 0,\n\t7926: 0,\n\t540: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(5(40|908|949)|1597|2577|2688|4514|9974)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkflippingbooksite\"] = globalThis[\"webpackChunkflippingbooksite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4514,5949,5908,2577,2688,540,8351,4829], () => (__webpack_require__(8469)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","MIXPANEL_EVENT_TIMEOUT","getGAEventCommonParams","page_title","document","title","page_path","window","location","pathname","page_location","href","AnalyticsService","Parametrized","constructor","params","super","bing","fb","ga","mixpanel","optOut","this","optOutState","event","eventName","eventData","gtagEventParams","gaId","getGaId","mixpanelPromise","mixpanelTrack","fbAnalyticsPromise","withFbAnalytics","fbAnalytics","send","gaEvent","category","uetq","push","el","ev","value","Promise","allSettled","properties","withMixpanel","race","wait","resolve","track","timeout","setTimeout","clearTimeout","opts","non_interaction","event_callback","withGtag","gtag","formatDate","date","getUTCFullYear","getUTCMonth","getUTCDate","pageView","commonParams","gaIdentify","user","user_id","Id","dimension2","mixpanelSetBaseFields","writeToUserProfileOnce","ssouid","$email","Email","FirstName","$first_name","LastName","$last_name","mixpanelIdentify","identify","String","mixpanelAlias","alias","fbAnalyticsIdentify","setSsoId","all","clearGAIdentify","clearMixpanelIdentify","reset","clearFbAnalyticsIdentify","clear","clearIdentify","update","writeToUserProfile","trackSignup","product","method","locale","pageLocale","captchaAttempts","InitialProduct","toUpperCase","people","set","getLoadedMixpanel","mixpanelLoaded","promise","async","loadedMixpanel","Object","keys","reduce","acc","propertyName","propertyValueFromMixPanel","get_property","undefined","set_once","incrementUserProfileKey","props","prop","callback","increment","then","cb","hasGtag","gaGlobal","JSON","parse","vid","gaCookie","cookie","split","map","c","replace","find","pattern","substring","length","Listenable","listeners","Set","listen","add","unlisten","delete","notify","forEach","l","ListenableParametrized","ServiceDataStorage","data","getData","readonly","updateData","overwriteData","newData","storage","serviceStorage","RealStorage","baseObj","get","key","getItem","setItem","remove","removeItem","getJSON","val","setJSON","stringify","ObjectStorage","getStorage","isStorageSupported","localStorage","sessionStorage","objectStorage","formatDateForServerShort","toISOString","Date","getTimezoneOffset","parseWsDate","loadCss","loadJs","parsePaymentInfo","formatDateForServer","throttle","EXTERNAL_URL_REGEX","contentUrl","contentRoot","src","test","charAt","reject","scriptTag","createElement","addEventListener","setAttribute","head","appendChild","linkTag","wsDate","parseInt","payment","LastUpdate","tryParseDate","Items","delay","shouldWait","args","dateString","Number","isNaN","GoTrialButton","B","direction","getAttribute","sendAnalytics","position","onLinkClick","preventDefault","stopPropagation","newLink","loggedIn","baseRegisterUrl","subsystem","service","registerUrl","getUserDetachedContext","encodeURIComponent","origin","getLink","url","onDescribe","GoTrialButtonWrapper","blockName","describeElement","animationEvent","animation","transition","AnimatedElement","clearClass","className","applyModifiers","animate","animationType","onAnimationEnd","removeEventListener","requestAnimationFrame","CalendlyButton","CalendlyButtonFBO","SingleElementIntersector","observerCallback","entries","observer","entry","onIntersectionChange","intersector","IntersectionObserver","observe","unobserve","GenericLoadableImage","imageLoaded","onLoad","complete","forceCheckCompletion","LoadableImage","Address","animateText","FirstScreen","calendlyName","element","addressWrapper","address","describeBlock","startAnimation","blockThreshold","SimpleClouds","blockElement","cloudNames","onReady","cloudElements","cloudName","ensureElement","readyCount","markReady","cloudElement","DomainCloud","transitionsCount","readyTransitionsCount","markReadyTransition","hovering","Marketing","claudName","fn","threshold","rootMargin","isIntersecting","runOnceOnIntersect","CustomDomain","release","SiteAnalyticsService","area","CTAAnalyticsService","analytics","button_location","ctaAnalytics","siteAntispamService","__flippingbook_user_detached_context__","getLoginConsumer","Mediaparts","Bootstrap","Params","loginConsumer","setLoadedClassForImage","imgElements","Array","from","querySelectorAll","loadedClassName","imgElement","classList","handleImageLoad","isLoggedIn","Boolean","flippingbook","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","call","m","amdO","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","t","mode","ns","create","def","current","indexOf","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","e","chunkId","promises","u","miniCssF","g","globalThis","Function","prototype","hasOwnProperty","done","script","needAttach","scripts","getElementsByTagName","s","charset","nc","onScriptComplete","prev","onerror","onload","doneFns","parentNode","removeChild","bind","type","target","Symbol","toStringTag","nmd","paths","children","p","loadStylesheet","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","nonce","errorType","realHref","err","Error","name","code","request","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","error","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}