{"version":3,"file":"js/pricingpage.js","mappings":"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","sources":["webpack://pcloud-site/webpack/runtime/chunk loaded","webpack://pcloud-site/./src/lib/move.js","webpack://pcloud-site/./src/lib/componentMount.js","webpack://pcloud-site/./src/lib/utils.js","webpack://pcloud-site/./src/svg/check-icon.svg","webpack://pcloud-site/./src/components/PricingPage/styles/Plans.js","webpack://pcloud-site/./src/components/PricingPage/styles/CryptoPlans.js","webpack://pcloud-site/./src/components/PricingPage/styles/StoragePlans.js","webpack://pcloud-site/./src/components/PricingPage/styles/StorageFamilyPlans.js","webpack://pcloud-site/./src/components/PricingPage/styles/TrafficPlans.js","webpack://pcloud-site/./src/components/PricingPage/styles/PassPlans.js","webpack://pcloud-site/./src/components/PricingPage/views/Style.js","webpack://pcloud-site/./src/svg/check-icon-v2.svg","webpack://pcloud-site/./src/components/PricingPage/styles/PlansTypeComponent.js","webpack://pcloud-site/./src/components/PlansBox/BoxPeriod.js","webpack://pcloud-site/./src/components/PlansBox/BoxHeader.js","webpack://pcloud-site/./src/components/CommonStyledComponents.js","webpack://pcloud-site/./src/components/PlansBox/BoxPrices.js","webpack://pcloud-site/./src/components/BusinessPageComponents/BoxPricesBusiness.js","webpack://pcloud-site/./src/svg/info-icon.svg","webpack://pcloud-site/./src/components/PlansBox/BoxFeature.js","webpack://pcloud-site/./src/components/PlansBox/BoxDiscount.js","webpack://pcloud-site/./src/components/PlansBox/BoxDisabled.js","webpack://pcloud-site/./src/components/PlansBox/PaymentOptions.js","webpack://pcloud-site/./src/components/PricingPage/views/PlanBox.js","webpack://pcloud-site/./src/components/SpinContainer.js","webpack://pcloud-site/./src/svg/loading-icon.svg","webpack://pcloud-site/./src/components/PricingPage/views/TrafficPlanInfoBox.js","webpack://pcloud-site/./src/components/PricingPage/views/TrafficPlanBox.js","webpack://pcloud-site/./src/components/PricingPage/views/TrafficPlanBoxes.js","webpack://pcloud-site/./src/components/ToggleTabs.js","webpack://pcloud-site/./src/components/PricingPage/views/Plans.js","webpack://pcloud-site/./src/components/PricingPage/views/MoreOptions.js","webpack://pcloud-site/./src/components/PricingPage/views/ExplorePcloud.js","webpack://pcloud-site/./src/components/PricingPage/views/UserPlanInfo.js","webpack://pcloud-site/./src/components/ModalManager/StaticContainers/TimerDiscountModal.js","webpack://pcloud-site/./new_site/images/plans/modal-close-circle.svg","webpack://pcloud-site/./src/components/ModalManager/StaticContainers/ImagePreviewModalSimple.js","webpack://pcloud-site/./new_site/images/features-section/collaboration.svg","webpack://pcloud-site/./new_site/images/features-section/security.svg","webpack://pcloud-site/./new_site/images/features-section/access.svg","webpack://pcloud-site/./new_site/images/features-section/media.svg","webpack://pcloud-site/./new_site/images/features-section/file.svg","webpack://pcloud-site/./new_site/images/features-section/backup.svg","webpack://pcloud-site/./src/components/FeaturesSection.js","webpack://pcloud-site/./src/components/PremiumPlanFeatures.js","webpack://pcloud-site/./new_site/images/used_by_white/x.svg","webpack://pcloud-site/./new_site/images/used_by_white/adidas.svg","webpack://pcloud-site/./new_site/images/used_by_white/instagram_light.svg","webpack://pcloud-site/./new_site/images/used_by_white/nike.svg","webpack://pcloud-site/./new_site/images/used_by_white/coca-cola.svg","webpack://pcloud-site/./new_site/images/used_by_white/uber.svg","webpack://pcloud-site/./new_site/images/used_by_white/etihad.svg","webpack://pcloud-site/./new_site/images/used_by_white/ddb.svg","webpack://pcloud-site/./new_site/images/used_by_white/pepsi.svg","webpack://pcloud-site/./new_site/images/used_by_white/snap.svg","webpack://pcloud-site/./new_site/images/used_by_white/linkedin.svg","webpack://pcloud-site/./new_site/images/used_by_white/bmw.svg","webpack://pcloud-site/./new_site/images/used_by_white/shell.svg","webpack://pcloud-site/./new_site/images/used_by_white/stanford.svg","webpack://pcloud-site/./new_site/images/used_by_white/raiffeisen.svg","webpack://pcloud-site/./src/lib/constants.js","webpack://pcloud-site/./src/components/LogoBar.js","webpack://pcloud-site/./new_site/images/p_plans_premium/family-icon.svg","webpack://pcloud-site/./src/components/FamilyOfferSection.js","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/check.svg","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/amex.svg","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/diners.svg","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/discouver.svg","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/mastercard.svg","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/paypal.svg","webpack://pcloud-site/./new_site/images/plans/encrypted-payment/visa.svg","webpack://pcloud-site/./src/components/PaymentLogos.js","webpack://pcloud-site/./new_site/images/plans/gogo-medal.svg","webpack://pcloud-site/./new_site/images/cyan-right-arrow.svg","webpack://pcloud-site/./new_site/images/plans/chevron-top.svg","webpack://pcloud-site/./new_site/images/plans/chevron-bottom.svg","webpack://pcloud-site/./src/svg/check-stamp-icon.svg","webpack://pcloud-site/./src/lib/subscriptions.js","webpack://pcloud-site/./src/lib/diffs.js","webpack://pcloud-site/./src/svg/card-logo/visa.svg","webpack://pcloud-site/./src/svg/card-logo/visa-v2.svg","webpack://pcloud-site/./src/svg/card-logo/mastercard.svg","webpack://pcloud-site/./src/svg/card-logo/mastercard-v2.svg","webpack://pcloud-site/./src/svg/card-logo/amex.svg","webpack://pcloud-site/./src/svg/card-logo/amex-v2.svg","webpack://pcloud-site/./src/svg/card-logo/diners.svg","webpack://pcloud-site/./src/svg/card-logo/diners-v2.svg","webpack://pcloud-site/./src/svg/card-logo/jcb.svg","webpack://pcloud-site/./src/svg/card-logo/discover.svg","webpack://pcloud-site/./src/svg/card-logo/discover-v2.svg","webpack://pcloud-site/./src/svg/paypal-logo.svg","webpack://pcloud-site/./src/svg/card-logo/paypal-logo-v2.svg","webpack://pcloud-site/./src/svg/card-logo/card-default.svg","webpack://pcloud-site/./src/svg/google-play.svg","webpack://pcloud-site/./src/svg/itunes.svg","webpack://pcloud-site/./src/svg/vivacom-logo.svg","webpack://pcloud-site/./src/lib/payments.js","webpack://pcloud-site/./src/components/ModalManager/StaticContainers/SimpleExitIntentModal.js","webpack://pcloud-site/./src/components/PricingPage/views/PricingPageDefaultUI.js","webpack://pcloud-site/./src/components/PricingPage/defaultValues.js","webpack://pcloud-site/./src/components/PricingPage/hooks/LoadPlansHook.js","webpack://pcloud-site/./src/lib/plansUtils.js","webpack://pcloud-site/./src/components/PricingPage/hooks/UserHook.js","webpack://pcloud-site/./src/components/PricingPage/views/PlansComparisonTable.js","webpack://pcloud-site/./src/components/PricingPage/views/PricingPageAcceleratedUI.js","webpack://pcloud-site/./new_site/images/big-info-icon.svg","webpack://pcloud-site/./src/components/PricingPage/views/NoPlansInfoMessage.js","webpack://pcloud-site/./src/components/PricingPage/PricingPage.js","webpack://pcloud-site/./src/exports/pricingpage.js","webpack://pcloud-site/./node_modules/clsx/dist/clsx.m.js","webpack://pcloud-site/./node_modules/detect-node/browser.js","webpack://pcloud-site/./node_modules/dom-helpers/esm/addClass.js","webpack://pcloud-site/./node_modules/dom-helpers/esm/hasClass.js","webpack://pcloud-site/./node_modules/dom-helpers/esm/removeClass.js","webpack://pcloud-site/../src/utils/errors.ts","webpack://pcloud-site/../src/utils/common.ts","webpack://pcloud-site/../src/utils/plugins.ts","webpack://pcloud-site/../src/core/scope.ts","webpack://pcloud-site/../src/core/finalize.ts","webpack://pcloud-site/../src/core/proxy.ts","webpack://pcloud-site/../src/core/immerClass.ts","webpack://pcloud-site/../src/core/current.ts","webpack://pcloud-site/../src/plugins/es5.ts","webpack://pcloud-site/../src/plugins/patches.ts","webpack://pcloud-site/../src/plugins/mapset.ts","webpack://pcloud-site/../src/utils/env.ts","webpack://pcloud-site/../src/immer.ts","webpack://pcloud-site/../src/plugins/all.ts","webpack://pcloud-site/./node_modules/immer/dist/index.js","webpack://pcloud-site/./node_modules/lodash/_Symbol.js","webpack://pcloud-site/./node_modules/lodash/_arrayMap.js","webpack://pcloud-site/./node_modules/lodash/_arrayPush.js","webpack://pcloud-site/./node_modules/lodash/_baseFlatten.js","webpack://pcloud-site/./node_modules/lodash/_baseGetTag.js","webpack://pcloud-site/./node_modules/lodash/_baseIsArguments.js","webpack://pcloud-site/./node_modules/lodash/_baseIsRegExp.js","webpack://pcloud-site/./node_modules/lodash/_baseToString.js","webpack://pcloud-site/./node_modules/lodash/_baseUnary.js","webpack://pcloud-site/./node_modules/lodash/_freeGlobal.js","webpack://pcloud-site/./node_modules/lodash/_getRawTag.js","webpack://pcloud-site/./node_modules/lodash/_isFlattenable.js","webpack://pcloud-site/./node_modules/lodash/_nodeUtil.js","webpack://pcloud-site/./node_modules/lodash/_objectToString.js","webpack://pcloud-site/./node_modules/lodash/_root.js","webpack://pcloud-site/./node_modules/lodash/escapeRegExp.js","webpack://pcloud-site/./node_modules/lodash/flatten.js","webpack://pcloud-site/./node_modules/lodash/isArguments.js","webpack://pcloud-site/./node_modules/lodash/isArray.js","webpack://pcloud-site/./node_modules/lodash/isObjectLike.js","webpack://pcloud-site/./node_modules/lodash/isRegExp.js","webpack://pcloud-site/./node_modules/lodash/isString.js","webpack://pcloud-site/./node_modules/lodash/isSymbol.js","webpack://pcloud-site/./node_modules/lodash/toString.js","webpack://pcloud-site/./node_modules/oblivious-set/src/index.ts","webpack://pcloud-site/./node_modules/redux-persist/es/constants.js","webpack://pcloud-site/./node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","webpack://pcloud-site/./node_modules/redux-persist/es/createPersistoid.js","webpack://pcloud-site/./node_modules/redux-persist/es/getStoredState.js","webpack://pcloud-site/./node_modules/redux-persist/es/purgeStoredState.js","webpack://pcloud-site/./node_modules/redux-persist/es/persistReducer.js","webpack://pcloud-site/./node_modules/redux-persist/es/stateReconciler/autoMergeLevel2.js","webpack://pcloud-site/./node_modules/redux-persist/es/persistCombineReducers.js","webpack://pcloud-site/./node_modules/redux-persist/es/persistStore.js","webpack://pcloud-site/./node_modules/redux-persist/es/createMigrate.js","webpack://pcloud-site/./node_modules/redux-persist/es/createTransform.js","webpack://pcloud-site/./node_modules/redux-persist/lib/stateReconciler/autoMergeLevel2.js","webpack://pcloud-site/./node_modules/redux-persist/lib/storage/createWebStorage.js","webpack://pcloud-site/./node_modules/redux-persist/lib/storage/getStorage.js","webpack://pcloud-site/./node_modules/redux-persist/lib/storage/index.js","webpack://pcloud-site/./node_modules/redux-state-sync/dist/syncState.js","webpack://pcloud-site/./node_modules/redux-thunk/es/index.js","webpack://pcloud-site/./node_modules/reselect/es/defaultMemoize.js","webpack://pcloud-site/./node_modules/reselect/es/index.js","webpack://pcloud-site/./node_modules/shallowequal/index.js","webpack://pcloud-site/./node_modules/unload/dist/es/browser.js","webpack://pcloud-site/./node_modules/unload/dist/es/index.js","webpack://pcloud-site/./new_site/images/traffic/close.png","webpack://pcloud-site/./new_site/images/traffic/close@2x.png","webpack://pcloud-site/./new_site/images/traffic/traffic-icon.png","webpack://pcloud-site/./new_site/images/traffic/traffic-icon@2x.png","webpack://pcloud-site/external window \"jQuery\"","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/date/now.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/assign.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/create.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/keys.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/parse-float.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/parse-int.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/promise.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/set.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol/to-primitive.js","webpack://pcloud-site/./node_modules/classnames/index.js","webpack://pcloud-site/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://pcloud-site/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://pcloud-site/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://pcloud-site/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://pcloud-site/./node_modules/immer/dist/immer.esm.mjs","webpack://pcloud-site/./node_modules/tslib/tslib.es6.mjs","webpack://pcloud-site/webpack/bootstrap","webpack://pcloud-site/webpack/runtime/amd options","webpack://pcloud-site/webpack/runtime/compat get default export","webpack://pcloud-site/webpack/runtime/define property getters","webpack://pcloud-site/webpack/runtime/global","webpack://pcloud-site/webpack/runtime/hasOwnProperty shorthand","webpack://pcloud-site/webpack/runtime/make namespace object","webpack://pcloud-site/webpack/runtime/node module decorator","webpack://pcloud-site/webpack/runtime/jsonp chunk loading","webpack://pcloud-site/webpack/runtime/nonce","webpack://pcloud-site/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};","const _move = (obj, _attachList) => {\n for (var n in obj) {\n if (obj.hasOwnProperty(n)) {\n for (var k = 0; k < _attachList.length; ++k) {\n if (_attachList[k].list.indexOf(n) != -1) {\n _attachList[k].attach[n] = obj[n];\n }\n }\n }\n }\n}\n\nexport default _move;","// @flow\n\nimport * as React from \"react\";\nimport { createRoot } from 'react-dom/client';\n\nconst usedReactRoots = {};\n\nconst getExistingOrNewRoot = (element: HTMLElement) => {\n // Existing ID or create new unique ID.\n const reactRootId = element.dataset.reactRootId || Math.random().toString(16).slice(2);\n let root = usedReactRoots[reactRootId] || null;\n\n if (root === null) {\n // Save the generated new ID to the element to be reused if we change the props and call this again.\n element.dataset.reactRootId = reactRootId;\n root = createRoot(element);\n }\n\n // Cache the root.\n usedReactRoots[reactRootId] = root;\n\n return {reactRootId , root};\n}\n\nconst componentMount = (render: (props: {}) => React.Node) => (element: HTMLElement, props: {}) => {\n if (!element) {\n return null;\n }\n\n const {reactRootId, root} = getExistingOrNewRoot(element);\n root.render(render(props));\n\n return () => {\n root.unmount();\n delete usedReactRoots[reactRootId];\n };\n};\n\nexport function componentRender(element: HTMLElement, render: React.Element) {\n const {reactRootId, root} = getExistingOrNewRoot(element);\n root.render(render);\n\n return () => {\n root.unmount();\n delete usedReactRoots[reactRootId];\n };\n}\n\nexport default componentMount;\n","//@flow\n\nimport {\n DiscountType,\n Userinfo,\n PlanIDType,\n Subscription\n} from \"../lib/types/dataTypes.components\";\n\n// import {\n// ADD_STORAGE_1COUNT_PLAN_ID, \n// ADD_STORAGE_4COUNT_PLAN_ID,\n// MB_PER_STORAGE_COUNT\n// } from \"./plansInfo\";\n\nimport {\n rcookie,\n setcookie,\n hrefSearch\n} from \"@pcloud/web-utilities/dist/lib/utils\";\nimport { __ } from \"@pcloud/web-utilities/dist/lib/langManager\";\nimport { renderQuota } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\n\nimport {\n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n CUSTOM4TB_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY_CUSTOM_PLAN_ID,\n FAMILY_CUSTOM_2COUNT_PLAN_ID,\n FAMILY_CUSTOM_5COUNT_PLAN_ID,\n FAMILY_ADD_1COUNT_PLAN_ID,\n FAMILY_ADD_2COUNT_PLAN_ID,\n FAMILY_ADD_5COUNT_PLAN_ID,\n CUSTOM_PLAN_ID,\n ADD_STORAGE_1COUNT_PLAN_ID,\n ADD_STORAGE_4COUNT_PLAN_ID,\n ADD_STORAGE_8COUNT_PLAN_ID,\n ADD_STORAGE_12COUNT_PLAN_ID,\n ADD_STORAGE_20COUNT_PLAN_ID,\n CUSTOM_20COUNT_PLAN_ID,\n CRYPTO_PLAN_ID,\n EFH_PLAN_ID,\n ADDITIONAL_TRAFFIC_ID,\n MAX_CUSTOM_STORAGE_COUNT,\n MAX_FAMILY_STORAGE_COUNT,\n PASS_PREMIUM_PLAN_ID,\n PASS_FAMILY_PLAN_ID,\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\n\nexport {\n rcookie,\n setcookie,\n hrefSearch,\n __,\n renderQuota\n};\n\nexport const removeHrefSearch = (params: Array, forceRefresh?: boolean) => {\n if (params && typeof params == 'string') {\n params = [params];\n }\n\n if (params && params.length && location.search.length) {\n var currentQueriesArr = location.search.substring(1).split('&');\n var currentQueriesMap = {};\n var finalQueriesArr = [];\n var finalURL;\n\n // Create object map with all current search queries\n for (var i in currentQueriesArr) {\n currentQueriesMap[currentQueriesArr[i].split('=').shift()] = currentQueriesArr[i].split('=').pop();\n }\n\n // Delete requested queries\n for (var i in params) {\n if (params[i].split('=').shift() in currentQueriesMap) {\n delete currentQueriesMap[params[i].split('=').shift()];\n }\n }\n\n if (Object.keys(currentQueriesMap).length) {\n for (var i in currentQueriesMap) {\n finalQueriesArr.push(i + '=' + currentQueriesMap[i]);\n }\n\n finalURL = location.origin + location.pathname + '?' + finalQueriesArr.join('&');\n } else {\n finalURL = location.origin + location.pathname;\n }\n\n if (forceRefresh) {\n location = finalURL;\n } else {\n window.history.pushState({}, null, finalURL);\n }\n }\n};\n\nexport const addHrefSearch = (params: Array | string, forceRefresh: boolean, newLocationUrl?: string) => {\n if (!params) {\n return;\n }\n\n let finalURL;\n\n if (typeof params == 'string') {\n params = [params];\n }\n\n if (location.search.length) {\n let oldQueriesArr = location.search.substring(1).split('&');\n let oldQueriesMap = {};\n let givenQueriesMap = {};\n let finalQueriesMap = {};\n let finalQueriesArr = [];\n\n // Create object map with all current search queries\n for (let i in oldQueriesArr) {\n oldQueriesMap[oldQueriesArr[i].split('=').shift()] = oldQueriesArr[i].split('=').pop();\n }\n\n for (let i in params) {\n givenQueriesMap[params[i].split('=').shift()] = params[i].split('=').pop();\n\n // Delete queries which will be duplicated in the end and remove them\n if (params[i].split('=').shift() in oldQueriesMap) {\n delete oldQueriesMap[params[i].split('=').shift()];\n }\n }\n\n finalQueriesMap = Object.assign(oldQueriesMap, givenQueriesMap);\n\n for (let i in finalQueriesMap) {\n finalQueriesArr.push(i + '=' + finalQueriesMap[i]);\n }\n\n finalURL = (newLocationUrl ? newLocationUrl : (location.origin + location.pathname)) + '?' + finalQueriesArr.join('&');\n\n } else {\n // Directly append newly provided params\n finalURL = (newLocationUrl ? newLocationUrl : location.href) + '?' + params.join('&');\n }\n\n if (forceRefresh) {\n location = finalURL;\n } else {\n if (!window.history.state || window.history.state.page != finalURL) {\n window.history.pushState({ \"page\": finalURL }, null, finalURL);\n }\n }\n};\n\nexport const saveToSessionstorage = (label: string, value: any) => {\n if (\n typeof Storage === \"undefined\" ||\n typeof sessionStorage === \"undefined\" ||\n sessionStorage === null\n ) {\n setcookie(label, value, 0);\n } else {\n sessionStorage.setItem(label, value);\n }\n};\n\nexport const signToCurrency = {\n \"$\": \"USD\",\n \"€\": \"EUR\",\n \"₤\": \"GBP\",\n \"BGN\": \"BGN\"\n};\n\nexport const currencyMap = {\n 'USD': '$',\n 'EUR': '€',\n 'GBP': '₤',\n // Used for Vivacom plans only\n 'BGN': 'BGN'\n};\n\nconst _repl = (str: string, repl: {} = {}) => {\n str = _properSpaces(str);\n\n if (!obLength(repl)) {\n return str;\n }\n\n for (var n in repl) {\n str = str.replace(new RegExp(\"%\" + n + \"%\", \"g\"), repl[n]);\n }\n\n return str;\n};\n\nconst _properSpaces = str => {\n return str.split(String.fromCharCode(160)).join(\" \");\n};\n\nexport const obLength = (obj: {}) => {\n var size = 0,\n key;\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n size++;\n }\n }\n return size;\n};\n\ntype getDisabledPlanReasonParams = {\n user: Userinfo,\n forPlan: PlanIDType,\n forPeriod: \"trial\" | \"month\" | \"year\" | \"lifetime\",\n downgradeAllowed?: boolean,\n add500GBAllowed?: boolean,\n trafficCount?: number,\n maxCustomStorageCount?: number\n};\n\nexport const getDisabledPlanReason = ({\n user = {},\n forPlan,\n forPeriod,\n downgradeAllowed,\n add500GBAllowed,\n trafficCount,\n canAddStorage,\n maxCustomStorageCount = MAX_CUSTOM_STORAGE_COUNT,\n maxFamilyStorageCount = MAX_FAMILY_STORAGE_COUNT\n}: getDisabledPlanReasonParams) => {\n if (!user || !forPlan || !forPeriod) {\n return \"\";\n }\n\n const {\n business,\n lastsubscription,\n cryptolifetime,\n plan,\n premium,\n premiumlifetime,\n premiumexpires,\n cryptosubscription,\n efh,\n planparams,\n additionaltraffic,\n additionaltrafficlifetime,\n family,\n passmanagerdata,\n usepassmanagertrial: isfreetrialused\n } = user;\n\n const hasUserInfo = Object.keys(user).length > 0\n let islifetime;\n let isfreetrialactive;\n let passplan;\n let passpremiumexpire;\n let passFamily;\n\n if (passmanagerdata) {\n islifetime = passmanagerdata.islifetime\n isfreetrialactive = passmanagerdata.isfreetrialactive;\n passplan = passmanagerdata.plan;\n passpremiumexpire = passmanagerdata.premiumexpires;\n passFamily = passmanagerdata.family;\n }\n\n if (hasUserInfo) {\n // const {\n // islifetime,\n // istrial: isfreetrialactive,\n // plan: passplan,\n // planexpires: passpremiumexpire\n // } = passmanagerdata\n\n if (business) {\n return (\"business\");\n } else {\n let hasStorageSubscription = premium && !premiumlifetime;\n let hasCryptoSubscription = cryptosubscription;\n let hasSubscriptionPeriod = false;\n let isCanceled = lastsubscription && lastsubscription.status === \"canceled\";\n let incStorage = 0;\n if (!isCanceled && lastsubscription) {\n hasSubscriptionPeriod = lastsubscription.period;\n }\n\n const isCustomPlanId = forPlan === ADD_STORAGE_1COUNT_PLAN_ID || forPlan === ADD_STORAGE_4COUNT_PLAN_ID || forPlan === ADD_STORAGE_8COUNT_PLAN_ID || forPlan === ADD_STORAGE_12COUNT_PLAN_ID || forPlan === ADD_STORAGE_20COUNT_PLAN_ID || forPlan === CUSTOM_20COUNT_PLAN_ID;\n const isFamilyPlanId = forPlan === FAMILY_ADD_1COUNT_PLAN_ID || forPlan === FAMILY_ADD_2COUNT_PLAN_ID || forPlan === FAMILY_ADD_5COUNT_PLAN_ID || forPlan === FAMILY_CUSTOM_2COUNT_PLAN_ID || forPlan === FAMILY_CUSTOM_5COUNT_PLAN_ID;\n\n if (isCustomPlanId || isFamilyPlanId) {\n const parts = forPlan.split(\"_\");\n incStorage = Number(parts[1]);\n forPlan = Number(parts[0]);\n }\n\n if ((!lastsubscription || (hasSubscriptionPeriod && lastsubscription.products.indexOf(forPlan) === -1) && !downgradeAllowed) && forPeriod != \"lifetime\") {\n if (hasStorageSubscription && plan) {\n if (plan == forPlan && hasStorageSubscription == forPeriod) {\n return (\"current_plan\");\n } else if (plan > forPlan) {\n return (\"lower_plan\");\n }\n } else if (efh && forPlan === EFH_PLAN_ID) {\n return (\"current_plan\");\n } else if (additionaltraffic && forPlan == ADDITIONAL_TRAFFIC_ID) {\n if (!additionaltrafficlifetime && planparams.additionaltraffic == trafficCount) {\n return (\"current_plan\");\n } else if (planparams.additionaltraffic > trafficCount) {\n return (\"traffic_downgrade_restriction\");\n }\n }\n } else if (!lastsubscription && forPeriod === \"lifetime\" && hasStorageSubscription && plan && plan > forPlan) {\n return (\"lower_plan\");\n } else if (plan && hasStorageSubscription && hasSubscriptionPeriod && lastsubscription.products.indexOf(plan) === -1 && forPeriod != \"lifetime\" && !downgradeAllowed) {\n if (forPlan == plan) {\n return (\"current_plan\");\n } else if (plan > forPlan) {\n return (\"lower_plan\");\n }\n }\n\n // Buying Crypto\n if (forPlan == CRYPTO_PLAN_ID) {\n if (cryptolifetime) {\n return (\"crypto_lifetime\");\n } else if (hasSubscriptionPeriod && !hasCryptoSubscription) {\n if (hasCryptoSubscription == \"month\" && forPeriod == \"month\") {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\" && forPeriod == \"month\") {\n return (\"lower_period\");\n }\n } else if (\n hasCryptoSubscription &&\n hasSubscriptionPeriod &&\n isCanceled == false\n ) {\n if (hasSubscriptionPeriod == \"month\" && forPeriod == \"month\") {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\") {\n return (\"lower_period\");\n } else if (forPeriod == \"year\") {\n return (\"current_plan\");\n }\n }\n }\n } else if (forPlan == EFH_PLAN_ID) {\n if (efh) {\n if (hasSubscriptionPeriod == forPeriod) {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\") {\n return (\"lower_period\");\n }\n }\n }\n // Buying Traffic\n } else if (forPlan == ADDITIONAL_TRAFFIC_ID) {\n if (plan === CUSTOM4TB_PLAN_ID) {\n return (\"custom_subscription\");\n } else if (forPeriod === \"lifetime\" && !premiumlifetime) {\n return \"traffic_lifetime_restriction\";\n } else if (plan == FAMILY2TB_PLAN_ID || plan == FAMILY_CUSTOM_PLAN_ID) {\n return \"custom_subscription\";\n } else if (forPeriod !== \"lifetime\" && additionaltrafficlifetime) {\n return \"traffic_lifetime_restriction_subs\";\n } else if (forPeriod === \"month\" && hasSubscriptionPeriod == \"year\" && (!downgradeAllowed || lastsubscription.billingprovider === 11)) {\n return (\"traffic_downgrade_restriction\");\n } else if (additionaltraffic && !additionaltrafficlifetime && (forPeriod === \"month\" || forPeriod === \"year\") && planparams.additionaltraffic == trafficCount && forPeriod === hasSubscriptionPeriod) {\n return (\"current_plan\");\n } else if (additionaltrafficlifetime && forPeriod === \"lifetime\" && planparams.additionaltraffic == trafficCount) {\n return (\"current_plan\");\n } else if (additionaltraffic && planparams.additionaltraffic > trafficCount && ((forPeriod === hasSubscriptionPeriod && !downgradeAllowed) || (forPeriod === \"lifetime\" && additionaltrafficlifetime))) {\n return (\"traffic_lifetime_restriction_subs\");\n }\n // Buying Pass\n } else if (forPlan == PASS_PREMIUM_PLAN_ID) {\n if ((isfreetrialactive && forPeriod === \"trial\") || (islifetime && forPeriod === \"lifetime\" && passplan === 1)) {\n return (\"current_plan\");\n } else if (passmanagerdata && forPeriod === \"free\") {\n return (\"current_active_plan\");\n } else if (isfreetrialused && forPeriod === 'trial') {\n return \"plan_upgrade_restrictions\";\n } else if ((islifetime && forPeriod != \"lifetime\") || passplan === 2) {\n return (\"custom_subscription\");\n // } else if (!emailverified) {\n // return (\"verify_email\")\n } else if (lastsubscription && !isCanceled) {\n if (lastsubscription.planid) {\n let activePlanId = lastsubscription.planid;\n let activePlanPeriod = lastsubscription.period;\n if (activePlanId === forPlan) {\n if (activePlanPeriod === forPeriod) {\n return \"current_plan\";\n } else if (activePlanPeriod === 'month' && (forPeriod === 'trial' || forPeriod === 'free')) {\n return \"plan_upgrade_restrictions\";\n } else if (activePlanPeriod === 'year' && (forPeriod === 'trial' || forPeriod === 'free' || forPeriod === 'month')) {\n return \"plan_upgrade_restrictions\";\n }\n }\n\n } else if (lastsubscription.products) {\n let products = lastsubscription.products;\n let activePlanPeriod = lastsubscription.period;\n if (products.indexOf(PASS_PREMIUM_PLAN_ID) !== -1) {\n if (activePlanPeriod === forPeriod) {\n return \"current_plan\";\n } else if (activePlanPeriod === 'month' && (forPeriod === 'trial' || forPeriod === 'free')) {\n return \"plan_upgrade_restrictions\";\n } else if (activePlanPeriod === 'year' && (forPeriod === 'trial' || forPeriod === 'free' || forPeriod === 'month')) {\n return \"plan_upgrade_restrictions\";\n }\n }\n }\n } else if ((!lastsubscription || (lastsubscription && isCanceled)) && passplan == 1 && !isfreetrialactive) {\n if (islifetime || (!islifetime && forPeriod != \"lifetime\")) {\n return \"plan_upgrade_restrictions\";\n }\n }\n\n // Active Pass Lifetime plan = disable any other Pass Plans.\n if (!isfreetrialactive && (passplan === 1 || passplan === 2) && islifetime) {\n return \"plan_upgrade_restrictions\";\n }\n } else if (forPlan == PASS_FAMILY_PLAN_ID) {\n if (passplan === 2 && passFamily && !passFamily.owner) {\n return \"custom_subscription\";\n };\n\n if ((isfreetrialactive && forPeriod === \"trial\") || (islifetime && forPeriod === \"lifetime\" && passplan === 2)) {\n return \"current_plan\";\n }\n\n if (lastsubscription && !isCanceled) {\n let activePlanPeriod = lastsubscription.period;\n\n if (activePlanPeriod === 'year' && forPeriod === 'month') {\n return \"plan_upgrade_restrictions\";\n }\n\n if (lastsubscription.planid) {\n let activePlanId = lastsubscription.planid;\n\n if (activePlanId === forPlan && activePlanPeriod === forPeriod) {\n return \"current_plan\";\n }\n } else if (lastsubscription.products) {\n let products = lastsubscription.products;\n\n if (products.indexOf(forPlan) !== -1 && activePlanPeriod === forPeriod) {\n return \"current_plan\";\n }\n }\n }\n\n // Active Pass Lifetime plan = disable any other Pass Plans.\n if (!isfreetrialactive && (passplan === 1 || passplan === 2) && islifetime) {\n return \"plan_upgrade_restrictions\";\n }\n\n // Buying Storage\n } else {\n if (plan == PREMIUM_PLAN_ID || plan == PREMIUM_PLUS_PLAN_ID || plan == CUSTOM4TB_PLAN_ID) {\n if (premiumlifetime) {\n if (plan == CUSTOM4TB_PLAN_ID && typeof planparams != 'undefined' && planparams.storage > 1 && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n if ((incStorage == maxCustomStorageCount && (plan == PREMIUM_PLAN_ID || plan == CUSTOM4TB_PLAN_ID)) || (incStorage > maxCustomStorageCount && plan == PREMIUM_PLAN_ID)) {\n return (\"plan_upgrade_restrictions\");\n } else if (incStorage == 1 && !add500GBAllowed) {\n return ((plan == PREMIUM_PLUS_PLAN_ID || plan == CUSTOM4TB_PLAN_ID) ? \"plan_upgrade_restrictions\" : \"custom_plan_upgrade_restrictions\");\n }\n } else if (forPlan <= plan || forPlan == FAMILY2TB_PLAN_ID || forPlan == FAMILY_CUSTOM_PLAN_ID || (forPlan == CUSTOM_PLAN_ID && !canAddStorage)) {\n return (\"storage_lifetime\");\n }\n } else if (hasSubscriptionPeriod && isCanceled == false) {\n if (forPeriod == \"lifetime\") {\n if (forPlan < plan) {\n return (\"lower_plan\");\n }\n } else if (hasSubscriptionPeriod == \"month\") {\n if (forPeriod == \"month\") {\n if (forPlan < plan && !downgradeAllowed) {\n return (\"lower_plan\");\n } else if (forPlan == plan) {\n return (\"current_plan\");\n }\n } else if (\n (forPeriod == \"year\" && forPlan < plan) ||\n (forPlan < plan && premiumexpires)\n ) {\n return (\"lower_plan\");\n }\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\" && !downgradeAllowed) {\n return (\"lower_period\");\n } else {\n if (forPlan < plan && !downgradeAllowed) {\n return (\"lower_plan\");\n } else if (forPlan == plan) {\n if (!downgradeAllowed || hasSubscriptionPeriod == forPeriod) {\n return (\"current_plan\");\n }\n }\n }\n }\n } else if (isCanceled == false) {\n if (forPlan < plan) {\n return (\"lower_plan\");\n } else if (forPlan <= plan && premiumexpires) {\n let now = new Date();\n let expires = new Date(premiumexpires);\n //Get 1 day in milliseconds\n let oneDay = 1000 * 60 * 60 * 24;\n let daysLeft = Number(expires) - Number(now) / oneDay;\n\n let monthlyTabisActive = forPeriod === \"month\";\n let annualTabisActive = forPeriod === \"year\";\n\n if (daysLeft > 10 && (annualTabisActive || monthlyTabisActive)) {\n return (\"lower_period\");\n }\n }\n }\n } else if (plan == CUSTOM_PLAN_ID) {\n if (typeof planparams != 'undefined' && planparams.storage >= maxCustomStorageCount && forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (typeof planparams != 'undefined' && ((planparams.storage + incStorage) > maxCustomStorageCount) && forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n return (\"plan_upgrade_restrictions\");\n } else if (forPlan == CUSTOM_PLAN_ID && incStorage == 1 && !add500GBAllowed) {\n if (typeof planparams != 'undefined' && planparams.storage <= 3) {\n return (\"custom_plan_upgrade_restrictions\");\n } else {\n return (\"plan_upgrade_restrictions\");\n }\n } else if (forPlan < plan || (!canAddStorage && forPlan == CUSTOM_PLAN_ID)) {\n return (\"storage_lifetime\");\n } else if (forPeriod === \"year\" || forPeriod === \"month\") {\n return (\"storage_lifetime\");\n }\n } else if ((plan == FAMILY2TB_PLAN_ID || plan == FAMILY_CUSTOM_PLAN_ID) && forPlan !== FAMILY_CUSTOM_PLAN_ID) {\n return (\"family\");\n } else if (forPlan == FAMILY_CUSTOM_PLAN_ID || forPlan == FAMILY2TB_PLAN_ID) {\n if ((plan == FAMILY_CUSTOM_PLAN_ID || plan == FAMILY2TB_PLAN_ID) && family && !family.owner) {\n return \"family\";\n } else if (plan == FAMILY_CUSTOM_PLAN_ID && typeof planparams != 'undefined') {\n if (planparams.storage >= maxFamilyStorageCount && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (((planparams.storage + incStorage) > maxFamilyStorageCount) && canAddStorage) {\n return (\"plan_upgrade_restrictions\");\n }\n }\n } else {\n if (forPlan == CUSTOM_PLAN_ID && incStorage > maxCustomStorageCount) {\n return (\"plan_upgrade_restrictions\");\n }\n }\n }\n }\n }\n};\n\nexport const preventEnteringNumbers = (event) => {\n const key = event.which || event.keyCode || event.charCode;\n const pressedCharacter = String.fromCharCode(key);\n\n if (!(/[a-zA-Z '-]/).test(pressedCharacter)) {\n event.preventDefault();\n }\n}\n\ntype creditCardValidation = {\n name: string,\n range: string,\n valid_length: Array\n}\n\nexport const findCardType = (cardNumber: string): creditCardValidation => {\n const creditCardValidations = [\n {\n name: \"amex\",\n range: \"34, 37\",\n valid_length: [\"15\"]\n },\n {\n name: \"diners\",\n range: \"301, 302, 303, 304, 305, 36\",\n valid_length: [\"16\"]\n },\n {\n name: \"jcb\",\n range: \"352, 353, 354, 355, 356, 357, 358\",\n valid_length: [\"16\"]\n },\n {\n name: \"visa\",\n range: \"4\",\n valid_length: [\"19\", \"18\", \"17\", \"16\", \"15\", \"14\", \"13\"]\n },\n {\n name: \"mastercard\",\n range: \"50, 51, 52, 53, 54, 55, 222\",\n valid_length: [\"16\"]\n },\n {\n name: \"discover\",\n range: \"6011, 622, 644, 645, 646, 647, 648, 649\",\n valid_length: [\"16\"]\n }\n ];\n\n return creditCardValidations.find((cardTemplate: creditCardValidation): (creditCardValidation | false) => {\n let isThereAMatch = cardTemplate.range.split(\", \").some((range: string) => {\n const rangeLength = range.length;\n return range === cardNumber.slice(0, rangeLength);\n });\n return isThereAMatch;\n });\n}\n\nexport const getExpiryDatePeriod = (expiryDate: string, period: string): string => {\n const periods = {\n month: Number(expiryDate.split(\"/\")[0]),\n year: Number(expiryDate.split(\"/\")[1])\n }\n\n if (periods.year > 2000 && periods.year < 2100) {\n periods.year -= 2000;\n }\n\n return periods[period];\n}\n\nexport const validateExpiryDate = (expiryDate: string): boolean => {\n const month = getExpiryDatePeriod(expiryDate, \"month\");\n const year = getExpiryDatePeriod(expiryDate, \"year\");\n const currentYear = new Date().getFullYear() - 2000;\n const currentMonth = new Date().getMonth() + 1;\n\n const validateExpression =\n month <= 12 &&\n ((month > 0 && year > currentYear) || (month >= currentMonth && year == currentYear)) &&\n year <= 40;\n\n return validateExpression;\n};\n\n\nexport const getDeviceID = () => {\n if (!window.localStorage.getItem(\"deviceid\") && !rcookie(\"deviceid\")) {\n return rcookie(\"deviceid\");\n } else if (rcookie(\"deviceid\")) {\n if (window.localStorage.getItem(\"deviceid\")) {\n window.localStorage.removeItem(\"deviceid\");\n }\n return rcookie(\"deviceid\");\n } else if (window.localStorage.getItem(\"deviceid\")) {\n setcookie(\"deviceid\", window.localStorage.getItem(\"deviceid\"), 365);\n window.localStorage.removeItem(\"deviceid\");\n return rcookie(\"deviceid\");\n }\n};\n\nexport const getCurrency = ({ auth, callback = () => { } }: { auth: string, callback: () => void }) => {\n const params = {};\n let getCurrencyTries = 0;\n\n if (getCurrencyTries >= 5) {\n onSuccess(\"$\");\n return;\n }\n\n if (auth) {\n params[\"auth\"] = $.cookie(\"pcauth\");\n }\n\n if (rcookie(\"forcecurrency\")) {\n params[\"currency\"] = $.cookie(\"forcecurrency\");\n }\n\n if (rcookie(\"forcecountry\")) {\n params[\"country\"] = $.cookie(\"forcecountry\");\n }\n\n const onSuccess = (currency) => {\n if (typeof Storage !== \"undefined\" && currencyMap[currency]) {\n sessionStorage.setItem(\"pclCurrency\", currencyMap[currency]);\n }\n\n callback(currency);\n };\n\n const getCurrencyApiCall = () => {\n getCurrencyTries++;\n const onError = () => {\n setTimeout(() => {\n getCurrencyApiCall();\n }, 300);\n };\n\n pCloudGlobals.apiMethod && pCloudGlobals.apiMethod(\n \"getcurrency\",\n params,\n (data) => {\n if (data.currency) {\n onSuccess(data.currency);\n } else {\n onError();\n }\n },\n {\n errorCallback: onError\n }\n );\n };\n\n getCurrencyApiCall();\n};\n\nexport const areArraysEqual = (array1: Array, array2: Array): boolean => {\n if (!array1 || !array2) {\n return false;\n }\n\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (let index1 = 0; index1 < array1.length; index1++) {\n const e1 = array1[index1];\n const e2 = array2[index1];\n\n if (Array.isArray(e1) && Array.isArray(e2)) {\n compareArrays(e1, e2);\n } else if (e1 !== e2) {\n return false;\n }\n }\n\n return true;\n}\n\nexport const formatMS = (milliseconds: number, type: \"day\" | \"hour\" | \"minute\" | \"second\"): number => {\n const typeMap = {\n \"day\": { \"divider\": 86400000, \"modulo\": milliseconds + 1 },\n \"hour\": { \"divider\": 3600000, \"modulo\": 24 },\n \"minute\": { \"divider\": 60000, \"modulo\": 60 },\n \"second\": { \"divider\": 1000, \"modulo\": 60 }\n };\n\n if (!(type in typeMap)) {\n console.error(\"Invalid duration type: \" + type);\n\n return 0;\n }\n\n return parseInt((milliseconds / typeMap[type].divider) % typeMap[type].modulo);\n};\n\nexport const msToTime = (duration: number, showHours = true): string => {\n let seconds = parseInt((duration / 1000) % 60);\n let minutes = parseInt((duration / 60000) % 60);\n let hours = parseInt((duration / 3600000) % 24);\n\n hours = hours < 10 ? '0' + hours : hours;\n minutes = minutes < 10 ? '0' + minutes : minutes;\n seconds = seconds < 10 ? '0' + seconds : seconds;\n\n return (showHours ? hours + ':' : '') + minutes + ':' + seconds;\n};\n\nexport const cleanFloat = (number: number): number => {\n let value = Number(number);\n let decimal = value % 1 == 0 ? 0 : 2;\n let result = Number(value.toFixed(decimal));\n\n if (result % 1 == 0) {\n decimal = 0;\n }\n\n return Number(value.toFixed(decimal));\n};\n\nexport const browserVersion = (userAgent, regex) => {\n return userAgent.match(regex) ? userAgent.match(regex)[2] : null;\n}\n\nexport const detectBrowser = (version) => {\n const userAgent = navigator.userAgent;\n let browser = \"unkown\";\n // Detect browser name\n browser = (/ucbrowser/i).test(userAgent) ? 'UCBrowser' : browser;\n browser = (/edg/i).test(userAgent) ? 'Edge' : browser;\n browser = (/googlebot/i).test(userAgent) ? 'GoogleBot' : browser;\n browser = (/chromium/i).test(userAgent) ? 'Chromium' : browser;\n browser = (/firefox|fxios/i).test(userAgent) && !(/seamonkey/i).test(userAgent) ? 'Firefox' : browser;\n browser = (/; msie|trident/i).test(userAgent) && !(/ucbrowser/i).test(userAgent) ? 'IE' : browser;\n browser = (/chrome|crios/i).test(userAgent) && !(/opr|opera|chromium|edg|ucbrowser|googlebot/i).test(userAgent) ? 'Chrome' : browser;;\n browser = (/safari/i).test(userAgent) && !(/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i).test(userAgent) ? 'Safari' : browser;\n browser = (/opr|opera/i).test(userAgent) ? 'Opera' : browser;\n browser = navigator.brave ? \"Brave\" : browser;\n\n if (version) {\n switch (browser) {\n case 'UCBrowser': return `${browser}/${browserVersion(userAgent, /(ucbrowser)\\/([\\d\\.]+)/i)}`;\n case 'Edge': return `${browser}/${browserVersion(userAgent, /(edge|edga|edgios|edg)\\/([\\d\\.]+)/i)}`;\n case 'GoogleBot': return `${browser}/${browserVersion(userAgent, /(googlebot)\\/([\\d\\.]+)/i)}`;\n case 'Chromium': return `${browser}/${browserVersion(userAgent, /(chromium)\\/([\\d\\.]+)/i)}`;\n case 'Firefox': return `${browser}/${browserVersion(userAgent, /(firefox|fxios)\\/([\\d\\.]+)/i)}`;\n case 'Chrome': return `${browser}/${browserVersion(userAgent, /(chrome|crios)\\/([\\d\\.]+)/i)}`;\n case 'Safari': return `${browser}/${browserVersion(userAgent, /(safari)\\/([\\d\\.]+)/i)}`;\n case 'Opera': return `${browser}/${browserVersion(userAgent, /(opera|opr)\\/([\\d\\.]+)/i)}`;\n case 'IE': const version = browserVersion(userAgent, /(trident)\\/([\\d\\.]+)/i);\n // IE version is mapped using trident version \n // IE/8.0 = Trident/4.0, IE/9.0 = Trident/5.0\n return version ? `${browser}/${parseFloat(version) + 4.0}` : `${browser}/7.0`;\n default: return `unknown/0.0.0.0`;\n }\n }\n\n return browser;\n}\n\nexport const isValidEmailAddress = (email: string): boolean => {\n const pattern = new RegExp(/^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\t\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/);\n return pattern.test(email);\n};\n\nexport const apiCall = (method, params, onSuccess, onError, opts) => {\n const dfd = jQuery.Deferred();\n opts = {\n errorCallback: (data) => {\n dfd.reject(data);\n if (typeof onError === 'function') {\n onError(data);\n }\n },\n ...opts\n }\n\n pCloudGlobals.apiMethod(\n method,\n params,\n (data) => {\n if (typeof onSuccess === 'function') {\n onSuccess(data);\n }\n dfd.resolve(data);\n },\n opts\n );\n\n return dfd.promise();\n};\n\nexport const apiCallPost = (method, params, onSuccess, onError, opts) => {\n const dfd = jQuery.Deferred();\n opts = {\n type: \"POST\",\n errorCallback: (data) => {\n dfd.reject(data);\n if (typeof onError === 'function') {\n onError(data);\n }\n },\n ...opts\n }\n\n pCloudGlobals.apiMethod(\n method,\n params,\n (data) => {\n dfd.resolve(data);\n if (typeof onSuccess === 'function') {\n onSuccess(data);\n }\n },\n opts\n );\n\n return dfd.promise();\n};\n\nexport const detectIsMobile = () => {\n return /Mobile|mini|Fennec|Android|iP(od|hone)/.test(navigator.appVersion);\n};\n\nexport const onMouseOut = (event, callback) => {\n const e = event ? event : window.event;\n // If this is an autocomplete element.\n if (e.target && e.target.tagName && e.target.tagName.toLowerCase() == \"input\") {\n return;\n }\n\n // Get the current viewport width.\n const vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n // If the current mouse X position is within 50px of the right edge of the viewport, return.\n if (e.clientX >= (vpWidth - 50)) {\n return;\n }\n\n // If the current mouse Y position is not within 50px of the top edge of the viewport, return.\n if (e.clientY >= 50) {\n return;\n }\n\n // Fixes mozila problem where event is getting triggered on rigth click. -83 seems to be a constant value for clientY in that case.\n if (e.clientY === -83) {\n return;\n }\n\n // Reliable, works on mouse exiting window and user switching active program\n const from = e.relatedTarget || e.toElement;\n\n // User is exiting window\n if (!from && callback) {\n callback();\n }\n}\n\nexport const isInternetExplorer = () => {\n return !!document.documentMode;\n}\n\nexport const scrollToTop = () => {\n window.scrollTo(0);\n};\n\nexport const bytesToSize = (bytes) => {\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n if (bytes == 0) return null;\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n if (i == 0) return bytes + ' ' + sizes[i];\n return (bytes / Math.pow(1024, i)).toFixed(0) + ' ' + sizes[i];\n};\n\nexport const setTitleByCodeUrl = (codeUrl, setTitle, setRegisterTitle, setLoginTitle) => {\n if (codeUrl) {\n if (codeUrl == 'DROPBOX2PCLOUD') {\n setTitle('Special for Dropbox users - press submit and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'HUBIC2PCLOUD') {\n setTitle('Special for hubiC users - press submit and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'APPO') {\n setTitle('Special for\"APPO\" members - register now and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'BIRTHDAY4U') {\n setTitle(__(\"PromoPage_birthday_text\"));\n } else if (codeUrl == 'PCLOUDMUSIC') {\n setTitle(__(\"pCloud_Music_coupon_submit\").replace(\"%url_promo%\", codeUrl));\n setRegisterTitle(__(\"pCloud_Music_coupon_register\").replace(\"%url_promo%\", codeUrl));\n setLoginTitle(__(\"pCloud_Music_coupon_login\").replace(\"%url_promo%\", codeUrl));\n } else if (codeUrl == 'BDAY3MONTHS') {\n setTitle(__(\"pm_coupon_submit\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n setRegisterTitle(__(\"pm_coupon_register\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n setLoginTitle(__(\"pm_coupon_login\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n } else if (codeUrl == 'PM6MONTHS' || codeUrl == \"INT6MONTHS\"|| codeUrl == \"LFS6MONTHS\") {\n setTitle(__(\"pm_coupon_submit\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n setRegisterTitle(__(\"pm_coupon_register\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n setLoginTitle(__(\"pm_coupon_login\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n } else {\n setTitle(__(\"promo_submit_with_url\").replace(\"%url_promo%\", codeUrl));\n setRegisterTitle(__(\"Register for Free and enter your promo code. It will become effective immediately!\"));\n setLoginTitle(__(\"Enter your promo code upon Login and it will become effective immediately.\"));\n }\n }\n else {\n setTitle(__('Have a promo code? Enter it below.'));\n setRegisterTitle(__(\"Register for Free and enter your promo code. It will become effective immediately!\"));\n setLoginTitle(__(\"Enter your promo code upon Login and it will become effective immediately.\"));\n }\n};\n\nexport const getMonthsFromCode = (code) => {\n if (!code) {\n return \"\"\n };\n\n const indexPosition = code.indexOf(\"MONTHS\");\n let monthsCountIndex;\n\n if (indexPosition === -1) {\n return \"\";\n }\n\n if (indexPosition > 0) {\n monthsCountIndex = indexPosition - 1;\n } else {\n monthsCountIndex = indexPosition + 7;\n }\n\n if (!isNaN(code[monthsCountIndex])) {\n return code[monthsCountIndex]\n }\n\n return \"\";\n};\n\nexport const getLanguage = () => {\n return currentLang || $.cookie('set_lang') || $.cookie('lang') || 'en'\n}\n\nexport const countriesInEuropeList = {\n \"AT\": \"Austria\",\n \"BE\": \"Belgium\",\n \"BG\": \"Bulgaria\",\n \"HR\": \"Croatia\",\n \"CY\": \"Cyprus\",\n \"CZ\": \"Czech Republic\",\n \"DK\": \"Denmark\",\n \"EE\": \"Estonia\",\n \"FI\": \"Finland\",\n \"FR\": \"France\",\n \"DE\": \"Germany\",\n \"GR\": \"Greece\",\n \"HU\": \"Hungary\",\n \"IE\": \"Ireland\",\n \"IT\": \"Italy\",\n \"LV\": \"Latvia\",\n \"LT\": \"Lithuania\",\n \"LU\": \"Luxembourg\",\n \"MT\": \"Malta\",\n \"NL\": \"Netherlands\",\n \"PL\": \"Poland\",\n \"PT\": \"Portugal\",\n \"RO\": \"Romania\",\n \"SK\": \"Slovakia\",\n \"SI\": \"Slovenia\",\n \"ES\": \"Spain\",\n \"SE\": \"Sweden\",\n \"CH\": \"Switzerland\",\n \"GB\": \"United Kingdom\",\n \"AL\": \"Albania\",\n \"AD\": \"Andorra\",\n \"AM\": \"Armenia\",\n \"BY\": \"Belarus\",\n \"BA\": \"Bosnia and Herzegovina\",\n \"FO\": \"Faroe Islands\",\n \"GE\": \"Georgia\",\n \"GI\": \"Gibraltar\",\n \"IS\": \"Iceland\",\n \"IM\": \"Isle of Man\",\n \"XK\": \"Kosovo\",\n \"LI\": \"Liechtenstein\",\n \"MK\": \"Macedonia\",\n \"MD\": \"Moldova\",\n \"MC\": \"Monaco\",\n \"ME\": \"Montenegro\",\n \"NO\": \"Norway\",\n \"RU\": \"Russian Federation\",\n \"SM\": \"San Marino\",\n \"RS\": \"Serbia\",\n \"CH\": \"Switzerland\",\n \"TR\": \"Turkey\",\n \"UA\": \"Ukraine\",\n \"GB\": \"United Kingdom\",\n \"VA\": \"Vatican City State\"\n};\n\nexport const isCountryInEurope = (countryCodeToNameMap, country) => {\n return countryCodeToNameMap[country];\n};\n\nexport const encodeQueryData = (data) => {\n const ret = [];\n\n for (let d in data) {\n ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));\n }\n\n return ret.join('&');\n};\n\nexport const calculateDiscountPercent = (price, oldPrice) => Math.floor((1 - (price/oldPrice)) * 100);\n\nexport const convertDateToDDMMMYY = (date: string, shortMonthName = true, dayMonthSeparator = \" \", monthYearSeparator = \" \") => {\n const monthNames = [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\"\n ];\n const dateObj = new Date(date);\n const day = dateObj.getDate();\n const month = monthNames[dateObj.getMonth()];\n const monthKey = \"month_\" + (!shortMonthName ? \"full_\" : \"\") + month;\n const year = dateObj.getFullYear();\n\n return day + dayMonthSeparator + __(monthKey) + monthYearSeparator + year;\n};\n\nexport const daysDiff = (dateTo: string, dateFrom: string = null) => {\n const dateFromObj = dateFrom !== null && dateFrom !== \"\" ? new Date(dateFrom) : new Date();\n const dateToObj = new Date(dateTo);\n\n // Change hours and minutes to be from the start of the day.\n dateFromObj.setHours(0,0,0,0);\n dateToObj.setHours(0,0,0,0);\n return (dateToObj.getTime() - dateFromObj.getTime() + ((dateFromObj.getTimezoneOffset() - dateToObj.getTimezoneOffset()) * 60 * 1000)) / (1000 * 3600 * 24);\n};","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCheckIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 14 10\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"check-icon_svg__st0\",\n d: \"M.4 5.4c-.6-.6-.6-1.5 0-2.1s1.5-.6 2.1 0l3.1 3.2 5.9-6c.6-.6 1.5-.6 2.1 0s.6 1.5 0 2.1l-6.9 7c-.6.6-1.5.6-2.1 0L.4 5.4z\"\n })));\n}\nexport default SvgCheckIcon;","import styled, { css } from \"styled-components\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\n\nexport const textGradientCSS = css`\n background: var(--text-gradient);\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n width: fit-content;\n`;\n\nexport const sectionTitleCSS = css`\n font-size: 36px;\n font-weight: 700;\n letter-spacing: -0.36px;\n`;\n\nexport const baseButtonCSS = css`\n border-radius: var(--button-border-radius);\n height: 48px;\n line-height: 48px;\n font-size: 15px;\n font-weight: 700;\n box-sizing: border-box;\n display: block;\n text-align: center;\n border: none;\n text-decoration: none;\n cursor: pointer;\n padding: 0 var(--spacing-md);\n`;\n\n/* ===== Plans.js ===== */\nexport const LoadingAlign = styled.div`\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n margin: 0px auto;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n z-index: 1;\n border: solid 1px #f0f0f0;\n background-color: #fcfcfc;\n border-radius: 17px;\n transition: all 400ms ease-in-out;\n\n @media (max-width: 768px) {\n border-radius: 0px;\n }\n`;\n\nexport const RelativeContainer = styled.div`\n position: relative;\n width: 100%;\n margin: 0 auto;\n`;\n\nexport const PlansContainerWrapper = styled.div`\n --old-price-color: var(--color-gray);\n --button-family-background: url(\"${(typeof cdnPath !== 'undefined' ? cdnPath : '/')}images/cyan-vector.svg\") right 18px center no-repeat, linear-gradient(#fff, #fff) padding-box, var(--family-gradient) border-box;\n --button-plan-action-background: url(\"${(typeof cdnPath !== 'undefined' ? cdnPath : '/')}images/white-vector.svg\") right 18px center no-repeat var(--button-color);\n --pricing-page-content-width: 1180px;\n --pricing-page-content-offset: calc(var(--spacing-lg) * 2);\n\n @media (max-width: 360px) {\n --pricing-page-content-offset: calc(var(--spacing-sm) * 2);\n }\n\n\n display: flex;\n flex-direction: column;\n background: ${({background}) => background ? background : `var(--surface-primary)`};\n align-items: center;\n box-sizing: border-box;\n text-align: left;\n`;\n\nexport const PlansContainerWrapperVer0 = styled.div`\n --pricing-page-content-width: 1180px;\n --pricing-page-content-offset: 40px;\n \n @media (max-width: 360px) {\n --pricing-page-content-offset: 20px;\n }\n`;\n\nexport const PlansPageTitle = styled.div`\n padding: var(--spacing-2xl) var(--spacing-lg) var(--spacing-xl) var(--spacing-lg);\n background: background: ${({background}) => background ? background : `linear-gradient(180deg, #FFF 2.16%, var(--surface-primary) 100%)`};\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n\n .headline-wrapper {\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n align-items: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n text-align: center;\n margin-bottom: var(--spacing-sm);\n }\n\n @media (max-width: 768px) {\n padding-bottom: var(--spacing-md);\n }\n\n .title {\n font-size: 42px;\n font-weight: 600;\n letter-spacing: -0.42px;\n ${textGradientCSS}\n\n @media (max-width: 768px) {\n font-size: 36px;\n letter-spacing: -0.36px;\n }\n }\n\n .sub-title {\n font-size: 20px;\n font-weight: 400;\n color: var(--color-base-black);\n\n @media (max-width: 768px) {\n font-size: 18px;\n line-height: 24px;\n }\n }\n`;\n\nexport const PlansWrapper = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const PlansWrapperVer0 = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n box-sizing: border-box;\n margin: 0 auto;\n`;\n\nexport const PeriodsWrapper = styled.div`\n margin-bottom: var(--spaces-6);\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n\n @media (max-width: 1030px) {\n margin-bottom: var(--spacing-lg);\n }\n\n .periods-toggle {\n margin-bottom: 0px;\n }\n`;\n\nexport const PeriodsWrapperVer0 = styled.div`\n margin-top: 50px;\n margin-bottom: 30px;\n\n .periods-toggle {\n margin-bottom: 0px;\n }\n\n @media (max-width: 768px) {\n margin-top: 20px;\n margin-bottom: 20px;\n }\n`;\n\nexport const PlanBoxesWrapper = styled.div`\n display: flex;\n gap: var(--spacing-lg);\n width: 100%;\n margin: 0 auto;\n justify-content: center;\n\n @media (max-width: 1030px) {\n flex-direction: column-reverse;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-md);\n }\n\n .plan-action-button {\n ${baseButtonCSS}\n background: var(--button-plan-action-background);\n width: 100%;\n color: #FFF;\n\n span > span {\n display: none;\n }\n }\n`;\n\nexport const PlanBoxesWrapperVer0 = styled.div`\n display: flex;\n gap: 26px;\n width: 100%;\n margin: 0 auto;\n justify-content: center;\n\n @media (max-width: 1030px) {\n flex-direction: column;\n align-items: center;\n justify-content: center;\n } \n`;\n\nexport const LoaderWrapper = styled.div`\n position: relative;\n display: inline-block;\n width: 64px;\n height: 64px;\n position: relative;\n\n .loading-icon_svg__color-path {\n fill: #17bed0;\n }\n`;\n\nexport const LoadingPlansText = styled.div`\n font-size: 15px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: normal;\n text-align: center;\n color: #000;\n margin-top: 10px;\n`;\n\nexport const ArrowBoxWrapper = styled.div`\n margin: 0 auto var(--spacing-md) auto;\n text-align: center;\n\n &.random_girl {\n @media (max-width: 1150px) {\n display: none;\n }\n \n position: absolute;\n bottom: -241px;\n right: 0px;\n\n .best_valued {\n margin-left: var(--spacing-sm);\n }\n }\n`;\n\nexport const ArrowBoxWrapperVer0 = styled.div`\n margin: 0 auto 10px auto;\n text-align: center;\n\n &.random_girl {\n @media (max-width: 1150px) {\n display: none;\n }\n \n position: absolute;\n bottom: -241px;\n right: 0px;\n\n .best_valued {\n margin-left: 5px;\n }\n }\n`;\n\nexport const ArrowCompare = styled.img`\n position: relative;\n top: 9px;\n margin: 0px 13px;\n max-width: 100%;\n`;\n\nexport const ArrowBoxBestValued = styled.span`\n font-family: 'Marck Script',cursive;\n font-size: 20px;\n font-weight: normal;\n font-style: normal;\n font-stretch: normal;\n line-height: 1.2;\n letter-spacing: normal;\n text-align: right;\n color: #999999;\n`;\n\nexport const PeriodsDisclaimer = styled.div`\n color: #999999;\n font-size: 14px;\n line-height: 16px;\n text-align: center;\n margin-top: 11px;\n opacity: ${({ show }) => show ? 1 : 0};\n transition: opacity 250ms ease-in-out;\n`;\n\nexport const PaymentPartner = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 12px;\n border: 0.5px solid var(--box-border);\n background: #FFF;\n box-shadow: 3px 4px 5px 0px rgba(0, 0, 0, 0.02);\n padding: var(--spacing-lg) var(--spacing-xl);\n gap: var(--spacing-xl);\n width: var(--pricing-page-content-width);\n max-width: calc(100% - var(--pricing-page-content-offset));\n box-sizing: border-box;\n margin-bottom: var(--spacing-lg);\n\n @media (max-width: 768px) {\n margin-top: var(--spacing-md);\n padding: var(--spacing-xl);\n flex-direction: column;\n border-radius: 24px;\n box-shadow: 5px 7px 25px 0px rgba(0, 0, 0, 0.05);\n gap: var(--spacing-md);\n }\n\n .payment-partner-text-container {\n font-size: 17px;\n font-weight: 400;\n letter-spacing: -0.17px;\n margin: 0;\n }\n`;\n\nexport const PaymentPartnerVer0 = styled.div`\n background: #fff;\n border: 1px solid #eee;\n text-align: center;\n font-size: 14px;\n padding: 13px 20px;\n margin: 10px auto;\n width: 100%;\n max-width: 826px;\n box-sizing: border-box;\n border-radius: 7px;\n\n &:last-of-type {\n margin: 10px auto 40px;\n }\n\n display: flex;\n align-items: center;\n\n @media (max-width: 768px) {\n flex-direction: column;\n justify-content: center;\n }\n`;\n\nexport const GogoLogo = styled.div`\n height: 55px;\n width: 200px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 200px 55px;\n background-image: url(\"${(typeof cdnPath !== 'undefined' ? cdnPath : '/')}images/plans/gogo-mini.png\");\n flex-shrink: 0;\n`;\n\nexport const GogoLogoVer0 = styled.div`\n display: inline-block;\n height: 55px;\n width: 200px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 200px 55px;\n background-image: url(\"${(typeof cdnPath !== 'undefined' ? cdnPath : '/')}images/plans/gogo-mini.png\");\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n margin: 0 auto 10px auto;\n }\n`;\n\nexport const JapaneseCertification = styled.div`\n box-sizing: border-box;\n display: flex;\n align-items: center;\n margin-bottom: var(--spacing-2xl);\n width: var(--pricing-page-content-width);\n max-width: calc(100% - var(--pricing-page-content-offset));\n box-sizing: border-box;\n font-size: 15px;\n font-weight: 400;\n letter-spacing: -0.15px;\n gap: var(--spacing-sm);\n \n @media (max-width: 768px) {\n font-size: 13px;\n letter-spacing: -0.13px;\n align-items: flex-start;\n }\n`;\n\nexport const JapaneseCertificationVer0 = styled.div`\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.4;\n letter-spacing: normal;\n color: #707070;\n margin: 30px auto;\n box-sizing: border-box;\n max-width: 826px;\n display: flex;\n gap: 4px;\n \n @media (max-width: 768px) {\n padding: 0px 20px;\n }\n`;\n\nexport const JapaneseCloudAwardContainer = styled.div`\n width: var(--pricing-page-content-width);\n max-width: calc(100% - var(--pricing-page-content-offset));\n margin-top: var(--spacing-2xl);\n margin-bottom: var(--spacing-lg);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-md);\n`;\n\nexport const JapaneseCloudAwardContainerVer0 = styled.div`\n border-bottom: 1px solid #E4E4E4;\n padding: 47px 15px 72px 15px;\n`;\n\nexport const JapaneseCloudAwardContainerTitle = styled.div`\n color: var(--color-base-black);\n font-size: 32px;\n font-weight: 700;\n`;\n\nexport const JapaneseCloudAwardContainerTitleVer0 = styled.h2`\n color: #2C2C2C;\n font-family: Roboto;\n font-size: 28px;\n font-style: normal;\n font-weight: 700;\n line-height: normal;\n text-align: center;\n margin-bottom: 12px;\n letter-spacing: normal;\n`;\n\nexport const ReadMoreToggle = styled.span`\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n color: var(--text-link);\n font-size: 15px;\n font-weight: 400;\n line-height: 20px; \n cursor: pointer;\n`;\n\nexport const ReadMoreToggleVer0 = styled.span`\n color: #17BED0;\n text-align: center;\n font-family: Roboto;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n text-decoration-line: underline;\n margin: 0 auto;\n display: block;\n cursor: pointer;\n`;\n\nexport const JapaneseCertificationDescription = styled.div`\n color: var(--color-base-black);\n font-size: 15px;\n font-weight: 400;\n line-height: 20px; \n`;\n\nexport const JapaneseCertificationDescriptionVer0 = styled.div`\n color: #707070;\n text-align: center;\n font-family: Roboto;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n margin-bottom: 12px;\n max-width: 830px;\n margin: 0 auto 12px auto;\n`;\n\nexport const CertificatesWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: var(--spacing-lg);\n margin-top: var(--spacing-lg);\n\n @media (max-width: 768px) {\n max-width: 570px;\n }\n`;\n\nexport const CertificatesWrapperVer0 = styled.div`\n display: flex;\n gap: 40px;\n margin: 72px auto 0 auto;\n justify-content: center;\n flex-wrap: wrap;\n @media (max-width: 768px) {\n max-width: 570px;\n }\n`;\n\nexport const CertificateImage = styled.img`\n cursor: pointer;\n width: 100%;\n border-radius: 12px;\n box-shadow: 3px 4px 5px 0px rgba(0, 0, 0, 0.02);\n`;\n\nexport const CertificateImageVer0 = styled.img`\n cursor: pointer;\n width: 570px;\n border-radius: 12px;\n @media (max-width: 768px) {\n width: 100%;\n }\n`;\n\n/* ===== PlanBox.js ===== */\nexport const PlanBoxOuterWrapper = styled.div`\n background-color: #ffffff;\n border: 0.5px solid var(--box-border);\n box-shadow: 3px 4px 5px 0px rgba(0, 0, 0, 0.02);\n border-radius: ${(props) => (props.borderRadius ? `${props.borderRadius}px` : \"0px\")};\n width: 100%;\n max-width: var(--plan-box-max-width);\n box-sizing: border-box;\n transition: box-shadow 200ms ease-in-out;\n\n overflow: ${(props) => (props.showBestPriceByRandomGirl ? \"unset\" : \"hidden\")};\n @media (max-width: 1150px) {\n overflow: hidden;\n }\n\n &:hover {\n box-shadow: ${({ disabled }) => {\n return disabled ? \"none\" : \"0px 2px 14px -6px rgba(0,0,0,0.44)\";\n }};\n cursor: ${({ disabled }) => {\n return disabled ? \"default\" : \"pointer\";\n }};\n \n div {\n cursor: ${({ disabled }) => {\n return disabled ? \"default\" : \"pointer\";\n }};\n }\n }\n\n &:last-of-type {\n .box-title {\n color: var(--color-success);\n }\n\n .plans-feature svg:first-child path {\n fill: var(--color-success);\n }\n\n .plan-action-button {\n background-color: var(--color-success);\n }\n }\n`;\n\nexport const PlanBoxOuterWrapperVer0 = styled.div`\n background-color: #ffffff;\n border-radius: ${(props) => (props.borderRadius ? `${props.borderRadius}px` : \"0px\")};\n width: 100%;\n max-width: 400px;\n box-sizing: border-box;\n\n overflow: ${(props) => (props.showBestPriceByRandomGirl ? \"unset\" : \"hidden\")};\n @media (max-width: 1150px) {\n overflow: hidden;\n }\n\n &:first-of-type {\n margin-top: 0px;\n margin-left: auto;\n }\n\n &:last-of-type {\n margin-bottom: 0px;\n margin-right: auto;\n }\n\n &:hover {\n box-shadow: ${({ disabled }) => {\n return disabled ? \"none\" : \"0px 2px 14px -6px rgba(0,0,0,0.44)\";\n }};\n cursor: ${({ disabled }) => {\n return disabled ? \"default\" : \"pointer\";\n }};\n \n div {\n cursor: ${({ disabled }) => {\n return disabled ? \"default\" : \"pointer\";\n }};\n }\n }\n\n @media (max-width: 768px) {\n margin: 8px auto;\n border-radius: 0px;\n }\n\n @media (max-width: 1030px) {\n margin: 8px auto;\n }\n`;\n\nexport const PlanBoxWrapper = styled.div`\n position: relative;\n width: 100%;\n max-width: var(--plan-box-max-width);\n box-sizing: border-box;\n padding: var(--spacing-xl);\n border-radius: ${(props) => (props.borderRadius ? `${props.borderRadius}px` : \"0px\")};\n box-shadow: ${({ newLabel, color, disabled }) => {\n if (disabled && newLabel) {\n return \"inset 0px 0px 0px 4px #cccccc\";\n }\n if (newLabel) {\n return `inset 0px 0px 0px 4px ${COLORS[color].mainColor}`;\n }\n return \"none\";\n }};\n\n .box-discount {\n border-top-right-radius: ${(props) => (props.showBestPriceByRandomGirl && props.borderRadius ? `${props.borderRadius}px` : \"unset\")};\n }\n \n /* Due to long labels in RU */\n .plan-action-button {\n padding: 0 16px;\n }\n\n .tooltip {\n padding: 15px 20px;\n max-width: 250px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n }\n\n @media (min-width: 1031px) and (max-width: 1144px) {\n padding: var(--spacing-lg);\n }\n`;\n\nexport const PlanBoxWrapperVer0 = styled.div`\n position: relative;\n width: 100%;\n max-width: 400px;\n box-sizing: border-box;\n padding: ${({showBestPriceByRandomGirl}) => showBestPriceByRandomGirl ? \"40px 30px 46px 30px\" : \"40px 40px 46px 40px\"};\n border-radius: ${(props) => (props.borderRadius ? `${props.borderRadius}px` : \"0px\")};\n box-shadow: ${({ newLabel, color, disabled }) => {\n if (disabled && newLabel) {\n return \"inset 0px 0px 0px 4px #cccccc\";\n }\n if (newLabel) {\n return `inset 0px 0px 0px 4px ${COLORS[color].mainColor}`;\n }\n return \"none\";\n }};\n\n .box-discount {\n border-top-right-radius: ${(props) => (props.showBestPriceByRandomGirl && props.borderRadius ? `${props.borderRadius}px` : \"unset\")};\n }\n \n /* Due to long labels in RU */\n .plan-action-button {\n padding: 0 16px;\n }\n\n &:first-of-type {\n margin-left: 0px;\n }\n\n &:last-of-type {\n margin-right: 0px;\n }\n\n @media (max-width: 768px) {\n padding: 25px 20px;\n border-radius: 0px;\n\n .box-discount {\n border-top-right-radius: 0;\n }\n }\n\n .tooltip {\n padding: 15px 20px;\n max-width: 250px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n }\n\n .feature-info-icon {\n margin-left: 2px;\n }\n\n @media (min-width: 1031px) and (max-width: 1144px) {\n padding: 20px 20px 26px 20px;\n }\n\n ${({showBestPriceByRandomGirl}) => showBestPriceByRandomGirl ? css`\n @media (min-width: 1221px) {\n .prices-wrapper-inner {\n font-size: 0.9em;\n }\n }\n ` : null}\n`;\n\nexport const PlanBoxInnerWrapper = styled.div``;\n\nexport const PlanBoxFeaturesWrapper = styled.div`\n margin-top: var(--spacing-xl);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n\n @media (max-width: 768px) {\n display: none;\n }\n\n .plans-feature {\n gap: var(--spacing-sm);\n\n svg:first-child {\n width: 11.15px;\n height: 8.57px;\n }\n \n .inner-text {\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: 400;\n letter-spacing: normal;\n }\n }\n`;\n\nexport const PlanBoxFeaturesWrapperVer0 = styled.div`\n margin-top: 33px;\n\n @media (max-width: 768px) {\n display: none;\n }\n`;\n\nexport const ArrowBoxInnerWrapper = styled.span`\n vertical-align: top;\n display: inline-block;\n`;\n\nexport const PlanDescription = styled.div`\n margin: 26px auto 0px auto;\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.14;\n letter-spacing: -0.35px;\n text-align: center;\n color: ${props => (props.disabled ? \"#cccccc\" : \"#878787\")};\n height: 32px;\n\n @media (max-width: 768px) {\n display: none;\n }\n`;\n\n/* ===== BoxPeriod.js ===== */\nexport const PeriodWrapper = styled.div`\n border-radius: 30px;\n height: 60px;\n border-radius: 30px;\n border: 0.5px solid rgba(0, 0, 0, 0.03);\n background-color: ${({ backgroundColorValue }) => backgroundColorValue || \"rgba(0, 0, 0, 0.1)\"};\n max-width: ${props => props.width}px;\n width: 100%;\n display: flex;\n justify-content: space-around;\n align-items: center;\n position: relative;\n box-sizing: border-box;\n\n .choose-period {\n color: var(--color-base-black);\n line-height: 60px;\n font-size: var(--medium-font-size);\n font-weight: 700;\n letter-spacing: normal;\n text-transform: uppercase;\n }\n\n .period-separator:has(+ .choose-period.active), .choose-period.active + .period-separator {\n display: none;\n }\n\n .period-separator {\n background: rgba(0, 0, 0, 0.10);\n height: 22px;\n }\n`;\n\nexport const PeriodWrapperVer0 = styled.div`\n margin: 0px auto 30px auto;\n position: relative;\n display: flex;\n justify-content: space-around;\n align-items: center;\n width: ${props => props.width}px;\n max-width: 400px;\n height: 38px;\n border-radius: 19px;\n background-color: ${({ backgroundColorValue }) => backgroundColorValue || \"rgba(0, 0, 0, 0.1)\"};\n position: relative;\n\n @media (max-width: 768px) {\n width: 90%;\n }\n`;\n\nexport const Period = styled.div`\n position: relative;\n display: inline-block;\n width: ${props => props.width}%;\n text-align: center;\n /* font-family: Inter, Roboto; */\n font-size: 14px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: 38px;\n letter-spacing: -0.35px;\n color: #333333;\n text-transform: uppercase;\n z-index: 2;\n transition: all 0.25s ease-in-out;\n cursor: pointer !important;\n\n &.active, &:hover {\n color: ${props => COLORS[props.color].mainColor};\n }\n`;\n\nexport const PeriodSeparator = styled.div`\n position: relative;\n display: inline-block;\n width: 1px;\n height: 16px;\n background-color: #cccccc;\n`;\n\nexport const PeriodSelectedBar = styled.div`\n width: calc(${props => props.width}% - 10px);\n height: calc(100% - 10px);\n border-radius: 24px;\n position: absolute;\n top: 5px;\n left: calc(${props => props.leftOffset}% + 6px);\n background-color: #ffffff;\n z-index: 1;\n transition: all 0.25s ease-in-out;\n box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.10);\n`;\n\nexport const PeriodSelectedBarVer0 = styled.div`\n width: calc(${props => props.width}% - 4px);\n height: 34px;\n border-radius: 17px;\n position: absolute;\n top: 2px;\n left: calc(${props => props.leftOffset}% + 2px);\n background-color: #ffffff;\n z-index: 1;\n transition: all 0.25s ease-in-out;\n box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.07);\n`;\n\n/* ===== PricingPageUI.js ===== */\nexport const VatIncluded = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-base-black);\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n gap: var(--spacing-xs);\n margin: var(--spacing-lg) 0 var(--spacing-xl) 0;\n padding: 0 var(--spacing-xl) var(--spacing-md) var(--spacing-xl);\n box-sizing: border-box;\n line-height: 18px;\n\n a {\n font-weight: 400 !important;\n }\n\n .upgrade-text {\n margin-bottom: 0;\n }\n\n @media(max-width: 1030px) {\n flex-direction: column;\n align-items: flex-start;\n max-width: var(--plan-box-max-width);\n border-bottom: 0.5px solid var(--box-border);\n }\n`;\n\nexport const VatIncludedVer0 = styled.div`\n display: flex;\n flex-direction: column-reverse;\n color: #999;\n font-size: 14px;\n margin: 21px 0 25px 0;\n padding: 0 0 20px;\n text-align: center;\n border-bottom: 1px solid #eee;\n`;\n\n/* ===== BoxHeader.js ===== */\nexport const BoxTitle = styled.h2`\n color: var(--text-link);\n font-size: 24px;\n font-style: normal;\n font-weight: 700;\n line-height: normal;\n letter-spacing: -0.24px;\n display: flex;\n align-items: center;\n margin: 0;\n padding: 0;\n`;\n\nexport const BoxTitleVer0 = styled.h2`\n font-size: 22px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.18;\n letter-spacing: -0.33px;\n text-align: center;\n color: ${({disabled, theme, color}) => {\n if (color && !disabled) {\n return COLORS[color].mainColor\n } else if (disabled && theme === \"dark\") {\n return \"#888888\";\n } else if (disabled) {\n return \"#cccccc\";\n } else {\n return \"#212121\"\n }\n }};\n display: flex;\n align-items: center;\n justify-content: center;\n\n @media(max-width: 768px) {\n font-size: 20px;\n }\n`;\n\nexport const BoxSubtitle = styled.div`\n color: var(--color-base-black);\n font-size: var(--base-font-size);\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n text-transform: uppercase;\n`;\n\nexport const BoxSubtitleVer0 = styled.div`\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.21;\n letter-spacing: -0.35px;\n text-align: center;\n color: ${({disabled, theme}) => {\n if (disabled && theme === \"dark\") {\n return \"#888888\";\n } else if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#e6e6e6\";\n } else {\n return \"#878787\";\n }\n }};\n text-transform: uppercase;\n\n @media(max-width: 768px) {\n display: none;\n }\n`;\n\nexport const HeaderWrapper = styled.div`\n width: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nexport const HeaderWrapperVer0 = styled.div`\n width: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\n/* ===== BoxPrice.js ===== */\nexport const PricesWrapperRow = styled.div`\n margin: var(--spacing-xl) auto var(--spacing-2xl) auto;\n\n .price-period-text {\n color: var(--color-gray);\n font-size: var(--base-font-size);\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n text-align: left;\n }\n`;\n\nexport const PricesWrapperRowVer0 = styled.div`\n max-width: 320px;\n margin: 24px auto 30px auto;\n /* font-family: Inter, Roboto; */\n @media (max-width: 768px) {\n margin: 16px auto 26px auto;\n }\n`;\n\nexport const PricesWrapperInnerRow = styled.div`\n min-height: 47px;\n display: flex;\n align-items: center;\n\n --crossline-height: 1.5px;\n --crossline-offset: 4px;\n\n .new-price {\n color: var(--color-base-black);\n font-size: 2.5em;\n font-style: normal;\n font-weight: 700;\n line-height: normal;\n letter-spacing: -2px;\n text-align: left;\n }\n\n .slash {\n color: var(--old-price-color);\n font-size: 2em;\n font-style: normal;\n font-weight: 300;\n line-height: normal;\n letter-spacing: -1.6px;\n margin-left: 4px;\n margin-right: calc(4px + var(--crossline-offset));\n }\n\n .old-price {\n color: var(--old-price-color);\n font-size: 2em;\n font-style: normal;\n font-weight: 300;\n line-height: normal;\n letter-spacing: -1.6px;\n text-align: left;\n }\n\n .crossline {\n position: absolute;\n height: var(--crossline-height);\n border-radius: 0.75px;\n background: var(--old-price-color);\n width: calc(100% + (var(--crossline-offset) * 2));\n left: calc(var(--crossline-offset) * -1);\n top: calc(50% - var(--crossline-height) / 2);\n }\n\n @media (min-width: 1145px) and (max-width: 1220px) {\n font-size: 0.9em;\n }\n\n @media (min-width: 1031px) and (max-width: 1144px) {\n font-size: 0.8em;\n }\n`;\n\nexport const PricesWrapperInnerRowVer0 = styled.div`\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: center;\n min-height: 48px;\n\n --crossline-height: 1.5px;\n --crossline-offset: 4px;\n\n .crossline {\n position: absolute;\n height: var(--crossline-height);\n border-radius: 0.75px;\n width: calc(100% + (var(--crossline-offset) * 2));\n left: calc(var(--crossline-offset) * -1);\n top: calc(50% - var(--crossline-height) / 2);\n }\n\n @media (max-width: 768px) {\n min-height: 0px;\n }\n\n .new-price, .old-price {\n font-size: 2.375em;\n }\n\n .slash {\n font-size: 2.5em;\n }\n\n @media (min-width: 1145px) and (max-width: 1220px) {\n font-size: 0.8em;\n }\n\n @media (min-width: 1031px) and (max-width: 1144px) {\n font-size: 0.7em;\n }\n`;\n\n/* ===== ExplorePcloud.js ===== */\nexport const TryPcloud = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n color: var(--color-base-black);\n text-align: center;\n font-size: 18px;\n font-weight: 500;\n line-height: 26px;\n margin-top: var(--spacing-md);\n margin-bottom: var(--spaces-6);\n box-sizing: border-box;\n`;\n\nexport const TryPcloudVer0 = styled.div`\n color: #2c2c2c;\n font-family: \"Roboto\", sans-serif;\n text-align: center;\n font-size: 18px;\n margin: 30px auto 40px auto;\n padding: 0px 20px;\n box-sizing: border-box;\n`;\n\n/* ===== UserPlanInfo.js ===== */\nexport const UserPlanInfoContainer = styled.div`\n background: var(--alert-info-background);\n border-radius: var(--alert-info-border-radius);\n text-align: center;\n box-sizing: border-box;\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n padding: var(--spacing-md) var(--spacing-lg);\n font-size: 13px;\n font-weight: 400;\n line-height: 16px;\n color: var(--color-base-black);\n display: flex;\n align-items: flex-start;\n justify-content: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-lg);\n\n @media (max-width: 768px) {\n padding: var(--spacing-md);\n }\n\n &:before {\n content: \"\";\n background: url(\"${(typeof cdnPath !== 'undefined' ? cdnPath : '/')}images/small-info-icon.svg\") no-repeat;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n display: inline-block;\n }\n\n & > div > &:last-of-type {\n margin: var(--spacing-md) auto var(--spacing-2xl);\n }\n`;\n\nexport const UserPlanInfoContainerVer0 = styled.div`\n background: #fffbdd;\n border: 1px solid #ede9cd;\n text-align: center;\n font-size: 14px;\n padding: 13px 20px;\n margin: 10px auto;\n width: 100%;\n max-width: 826px;\n box-sizing: border-box;\n border-radius: 7px;\n\n &:last-of-type {\n margin: 10px auto 40px;\n }\n`;","import styled from \"styled-components\";\nimport { PlanBoxOuterWrapperVer0, PeriodWrapperVer0, PlanBoxWrapperVer0} from \"./Plans\";\n\nexport const Crypto_PlansWrapper = styled.div`\n width: 100%;\n max-width: 1220px;\n box-sizing: border-box;\n\n .plans-container {\n min-height: 505px;\n }\n\n @media (max-width: 768px) {\n .plans-container {\n min-height: auto;\n }\n }\n`;\n\nexport const Crypto_PlanBoxOuterWrapper = styled(PlanBoxOuterWrapperVer0)`\n max-width: unset;\n @media (max-width: 768px) {\n border-radius: ${(props) => (props.borderRadius ? `${props.borderRadius}px` : \"0px\")};\n }\n`;\n\nexport const Crypto_PeriodsWrapper = styled.div``;\n\nexport const Crypto_PeriodWrapper = styled(PeriodWrapperVer0)`\n margin: 0px auto 20px auto;\n width: 100%;\n max-width: unset;\n`;\n\nexport const Crypto_PlanBoxWrapper = styled(PlanBoxWrapperVer0)`\n padding: 36px 40px;\n max-width: unset;\n`;\n\nexport const Crypto_PlanBoxFeaturesWrapper = styled.div`\n margin-top: 39px;\n\n @media (max-width: 768px) {\n display: none;\n }\n`;","import styled from \"styled-components\";\nimport { PlanBoxWrapper, PlanBoxWrapperVer0} from \"./Plans\";\n\nexport const Storage_PlanBoxWrapperVer0 = styled(PlanBoxWrapperVer0)`\n .plans-feature {\n border-bottom: none;\n }\n`;\n\nexport const Storage_PlanBoxWrapper = styled(PlanBoxWrapper)`\n .plans-feature {\n border-bottom: none;\n }\n`;","import styled from \"styled-components\";\nimport { Crypto_PlansWrapper, Crypto_PlanBoxOuterWrapper, Crypto_PlanBoxWrapper, Crypto_PlanBoxFeaturesWrapper} from \"./CryptoPlans\";\n\nexport const StorageFamily_PlansWrapper = styled(Crypto_PlansWrapper)`\n .plans-container {\n min-height: 487px;\n }\n\n @media (max-width: 768px) {\n .plans-container {\n min-height: auto;\n }\n }\n`;\n\nexport const StorageFamily_PlanBoxOuterWrapper = styled(Crypto_PlanBoxOuterWrapper)`\n background-color: #f6f6f6;\n`;\n\nexport const StorageFamily_PlanBoxWrapper = styled(Crypto_PlanBoxWrapper)``;\n\nexport const StorageFamily_PlanBoxFeaturesWrapper = styled(Crypto_PlanBoxFeaturesWrapper)``;","import styled from \"styled-components\";\nimport { PlansWrapperVer0, PeriodsWrapperVer0} from \"./Plans\";\n\nexport const Traffic_PlansWrapper = styled(PlansWrapperVer0)`\n .plans-container {\n min-height: 337px;\n }\n\n @media (max-width: 768px) {\n .plans-container {\n min-height: 320px;\n }\n }\n`;\n\nexport const Traffic_PeriodsWrapper = styled(PeriodsWrapperVer0)`\n margin-top: 0;\n`;","import styled from \"styled-components\";\nimport { PeriodWrapperVer0 } from \"./Plans\";\n\nexport const Pass_PlansWrapper = styled.div`\n max-width: 1220px;\n box-sizing: border-box;\n margin: 0 auto;\n`;\n\nexport const Pass_PeriodsWrapper = styled.div`\n .choose-period {\n &:not(.active) {\n color: #fff;\n }\n }\n\n .period-separator {\n display: none;\n }\n \n @media (max-width: 768px) {\n margin-top: 20px;\n margin-bottom: -4px;\n }\n`;\nexport const Pass_PeriodWrapper = styled(PeriodWrapperVer0)`\n margin: 0px auto 40px auto;\n \n @media (max-width: 768px) {\n margin: 0px auto 20px;\n }\n`;\n\nexport const Pass_VatIncluded = styled.div`\n font-size: 15px;\n color: #fff;\n opacity: .5;\n margin-top: 16px;\n text-align: center;\n`;","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const Wrapper = styled.div`\n position: relative;\n`;\n\nexport const FormWrapper = styled.div`\n box-sizing: border-box;\n border-radius: 7px;\n border: solid 1px #f2f2f2;\n background-color: #fcfcfc;\n padding: 13px;\n\n @media (max-width: 768px) {\n padding: 0px;\n border-radius: 0px;\n background: transparent;\n border: none;\n min-height: 0px;\n height: auto;\n }\n`;\n\nexport const SignFormWrapper = styled(FormWrapper)`\n height: ${({ user }) => (user ? \"auto\" : \"540px\")};\n padding: ${({ user }) => (user ? \"13px\" : \"28px 48px 28px\")};\n transition: all 250ms ease-in-out;\n overflow-y: auto;\n overflow-x: hidden;\n`;\n\nexport const PaymentFormWrapper = styled(FormWrapper)`\n height: 460px;\n`;\n\nexport const PaymentMessageForm = styled(PaymentFormWrapper)`\n padding: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n text-align: center;\n font-size: 20px;\n line-height: 1.4;\n flex-direction: column;\n\n svg {\n margin-bottom: 20px;\n\n @media (max-width: 768px) {\n margin-bottom: 15px;\n }\n }\n\n @media (max-width: 768px) {\n font-size: 15px;\n font-weight: bold;\n }\n`;\n\nexport const FormContainer = styled.div`\n width: 100%;\n max-width: 420px;\n margin: 0 auto;\n height: 100%;\n background-color: inherit;\n box-sizing: border-box;\n\n &.payment-form {\n padding: 30px 0px 0px 0px;\n\n @media (max-width: 768px) {\n padding-bottom: 0px;\n }\n }\n\n .responsive-wrap {\n width: 100%;\n\n @media (max-width: 768px) {\n margin-left: 0px;\n }\n }\n`;\n\nexport const SectionTitle = styled.h3`\n font-size: 18px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.22;\n letter-spacing: normal;\n text-align: left;\n color: #2a2a2a;\n padding-left: 0px;\n margin: 0px 0px 15px 0px;\n opacity: ${({ disabled }) => (disabled ? 0.4 : 1)};\n\n @media (max-width: 768px) {\n text-transform: uppercase;\n font-size: 14px;\n opacity: 0.5;\n color: #000;\n margin-bottom: 10px;\n }\n`;\n\nexport const SeparationLine = styled.div`\n display: inline-block;\n width: 100%;\n height: 1px;\n background-color: #f6f6f6;\n margin: 20px auto;\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n margin: 11px auto;\n }\n`;\n\nexport const TopHeadline = styled.h1`\n margin: 42px auto 30px auto;\n font-size: 36px;\n font-weight: bold;\n letter-spacing: normal;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n\n span {\n margin-left: 18px;\n margin-bottom: -2px;\n line-height: 46px;\n }\n\n @media (max-width: 768px) {\n font-size: 24px;\n letter-spacing: -0.6px;\n margin: 5px auto 12px;\n\n &.checkout-headline {\n display: none;\n }\n }\n`;\n\nexport const PriceLoadingWrapper = styled.div`\n display: inline-block;\n width: 18px;\n height: 18px;\n position: relative;\n`;\n\nexport const AnimationContainer = styled.div`\n flex-shrink: 0;\n\n .fade-enter {\n opacity: 0;\n }\n .fade-exit {\n opacity: 1;\n }\n .fade-enter-active {\n opacity: 1;\n }\n .fade-exit-active {\n opacity: 0;\n }\n .fade-enter-active,\n .fade-exit-active {\n transition: opacity 300ms ease-in-out;\n }\n`;\n\nexport const FadeTranstionContainer = styled.div`\n // Loading animation\n .fading-enter,\n .fade-appear {\n opacity: 1;\n }\n .fading-exit {\n opacity: 0;\n }\n .fading-enter-active,\n .fade-appear-active {\n opacity: 1;\n }\n .fading-exit-active {\n opacity: 0;\n }\n .fading-enter-active,\n .fade-appear-active,\n .fading-exit-active {\n }\n`;\n\nexport const UserPlanInfoContainer = styled.div`\n background: #fffbdd;\n border: 1px solid #ede9cd;\n text-align: center;\n font-size: 14px;\n padding: 13px 20px;\n margin: 10px auto;\n width: 100%;\n max-width: 826px;\n box-sizing: border-box;\n border-radius: 7px;\n\n &:last-of-type {\n margin: 10px auto 40px;\n }\n`;\n\nexport const PriceError = styled(UserPlanInfoContainer)`\n color: #f73c3c;\n border: solid 1px #f73c3c;\n background: rgb(254, 246, 246);\n margin: 10px auto 40px;\n`;\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCheckIconV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 9,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 6.175l5.9-5.9A.948.948 0 0110.6 0c.283 0 .517.092.7.275a.948.948 0 01.275.7.948.948 0 01-.275.7l-6.6 6.6c-.2.2-.434.3-.7.3a.96.96 0 01-.7-.3l-2.6-2.6a.948.948 0 01-.275-.7c0-.283.091-.517.275-.7A.948.948 0 011.4 4c.283 0 .516.092.7.275l1.9 1.9z\",\n fill: \"#17BED0\"\n })));\n}\nexport default SvgCheckIconV2;","import React, { useMemo } from \"react\";\nimport { hrefSearch } from \"@pcloud/web-utilities/dist/lib/utils\";\nimport { PlansContainerWrapper, PlansPageTitle, PlansContainerWrapperVer0, PlansWrapper, PlansWrapperVer0, PlanBoxOuterWrapper, PlanBoxOuterWrapperVer0, PeriodsWrapper, PeriodsWrapperVer0, PeriodSelectedBar, PeriodSelectedBarVer0, PeriodWrapper, PeriodWrapperVer0, PlanBoxFeaturesWrapper, VatIncluded, PlanBoxesWrapper, PlanBoxesWrapperVer0, BoxTitle, BoxTitleVer0, BoxSubtitleVer0, BoxSubtitle, HeaderWrapperVer0, HeaderWrapper, PricesWrapperInnerRow, PricesWrapperInnerRowVer0, PricesWrapperRowVer0, PricesWrapperRow, PlanBoxFeaturesWrapperVer0, VatIncludedVer0, TryPcloud, TryPcloudVer0, PaymentPartner, PaymentPartnerVer0, JapaneseCertificationVer0, JapaneseCertification, JapaneseCloudAwardContainerVer0, JapaneseCloudAwardContainer, JapaneseCloudAwardContainerTitle, JapaneseCloudAwardContainerTitleVer0, ReadMoreToggleVer0, ReadMoreToggle, JapaneseCertificationDescription, JapaneseCertificationDescriptionVer0, CertificatesWrapper, CertificatesWrapperVer0, CertificateImage, CertificateImageVer0, GogoLogoVer0, GogoLogo, UserPlanInfoContainer, UserPlanInfoContainerVer0, ArrowBoxWrapperVer0, ArrowBoxWrapper} from \"./Plans\";\nimport { Crypto_PlansWrapper, Crypto_PlanBoxOuterWrapper, Crypto_PlanBoxWrapper, Crypto_PeriodsWrapper, Crypto_PeriodWrapper, Crypto_PlanBoxFeaturesWrapper} from \"./CryptoPlans\";\nimport { Storage_PlanBoxWrapper, Storage_PlanBoxWrapperVer0 } from \"./StoragePlans\";\nimport { StorageFamily_PlansWrapper, StorageFamily_PlanBoxOuterWrapper, StorageFamily_PlanBoxWrapper, StorageFamily_PlanBoxFeaturesWrapper } from \"./StorageFamilyPlans\";\nimport { Traffic_PlansWrapper, Traffic_PeriodsWrapper } from \"./TrafficPlans\";\nimport { Pass_PlansWrapper, Pass_PeriodsWrapper, Pass_PeriodWrapper, Pass_VatIncluded } from \"./PassPlans\";\nimport { TopHeadline } from \"../views/Style\";\nimport CheckIcon from \"../../../svg/check-icon.svg\";\nimport CheckIconV2 from \"../../../svg/check-icon-v2.svg\";\n\nconst PlansTypeComponent = (props) => {\n\n const version = useMemo(() => props.plansVersion ? props.plansVersion : (props.type === \"storage\" ? (hrefSearch(\"plansversion\") || (typeof PLANS_VERSION !== \"undefined\" ? PLANS_VERSION: null)) : \"0.0.0\"), [props.type]);\n \n const components = {\n PlansContainer: {\n storage: {\n \"0.0.0\": PlansContainerWrapperVer0, \n default: PlansContainerWrapper\n },\n },\n PlansWrapper: {\n storage: {\n \"0.0.0\": PlansWrapperVer0, \n default: PlansWrapper\n },\n crypto: Crypto_PlansWrapper,\n passwords: Pass_PlansWrapper,\n storage_family: StorageFamily_PlansWrapper,\n traffic: Traffic_PlansWrapper\n },\n PlanBoxOuterWrapper: {\n storage: {\n \"0.0.0\": PlanBoxOuterWrapperVer0, \n default: PlanBoxOuterWrapper\n },\n crypto: Crypto_PlanBoxOuterWrapper,\n storage_family: StorageFamily_PlanBoxOuterWrapper\n },\n PlanBoxWrapper: {\n storage: {\n \"0.0.0\": Storage_PlanBoxWrapperVer0, \n default: Storage_PlanBoxWrapper\n },\n crypto: Crypto_PlanBoxWrapper,\n storage_family: StorageFamily_PlanBoxWrapper\n },\n PeriodsWrapper: {\n storage: {\n \"0.0.0\": PeriodsWrapperVer0, \n default: PeriodsWrapper\n },\n crypto: Crypto_PeriodsWrapper,\n passwords: Pass_PeriodsWrapper,\n traffic: Traffic_PeriodsWrapper\n },\n PeriodWrapper: {\n storage: {\n \"0.0.0\": PeriodWrapperVer0, \n default: PeriodWrapper\n },\n crypto: Crypto_PeriodWrapper,\n passwords: Pass_PeriodWrapper\n },\n PlanBoxFeaturesWrapper: {\n storage: {\n \"0.0.0\": PlanBoxFeaturesWrapperVer0, \n default: PlanBoxFeaturesWrapper\n },\n crypto: Crypto_PlanBoxFeaturesWrapper,\n storage_family: StorageFamily_PlanBoxFeaturesWrapper\n },\n VatIncluded: {\n storage: {\n \"0.0.0\": VatIncludedVer0, \n default: VatIncluded\n },\n passwords: Pass_VatIncluded\n },\n TopHeadline: {\n storage: {\n \"0.0.0\": TopHeadline,\n default: PlansPageTitle\n }\n },\n PeriodSelectedBar: {\n storage: {\n \"0.0.0\": PeriodSelectedBarVer0,\n default: PeriodSelectedBar\n }\n },\n PlanBoxesWrapper: {\n storage: {\n \"0.0.0\": PlanBoxesWrapperVer0,\n default: PlanBoxesWrapper\n }\n },\n BoxTitle: {\n storage: {\n \"0.0.0\": BoxTitleVer0,\n default: BoxTitle\n }\n },\n BoxSubtitle: {\n storage: {\n \"0.0.0\": BoxSubtitleVer0,\n default: BoxSubtitle\n }\n },\n HeaderWrapper: {\n storage: {\n \"0.0.0\": HeaderWrapperVer0,\n default: HeaderWrapper\n }\n },\n PricesWrapperRow: {\n storage: {\n \"0.0.0\": PricesWrapperRowVer0,\n default: PricesWrapperRow\n }\n },\n PricesWrapperInnerRow: {\n storage: {\n \"0.0.0\": PricesWrapperInnerRowVer0,\n default: PricesWrapperInnerRow\n }\n },\n CheckIcon: {\n storage: {\n \"0.0.0\": CheckIcon,\n default: CheckIconV2\n }\n },\n TryPcloud: {\n storage: {\n \"0.0.0\": TryPcloudVer0,\n default: TryPcloud\n }\n },\n PaymentPartner: {\n storage: {\n \"0.0.0\": PaymentPartnerVer0,\n default: PaymentPartner\n }\n },\n JapaneseCertification: {\n storage: {\n \"0.0.0\": JapaneseCertificationVer0,\n default: JapaneseCertification\n }\n },\n JapaneseCloudAwardContainer: {\n storage: {\n \"0.0.0\": JapaneseCloudAwardContainerVer0,\n default: JapaneseCloudAwardContainer\n },\n },\n JapaneseCloudAwardContainerTitle: {\n storage: {\n \"0.0.0\": JapaneseCloudAwardContainerTitleVer0,\n default: JapaneseCloudAwardContainerTitle\n },\n },\n ReadMoreToggle: {\n storage: {\n \"0.0.0\": ReadMoreToggleVer0,\n default: ReadMoreToggle\n },\n },\n JapaneseCertificationDescription: {\n storage: {\n \"0.0.0\": JapaneseCertificationDescriptionVer0,\n default: JapaneseCertificationDescription\n },\n },\n CertificatesWrapper: {\n storage: {\n \"0.0.0\": CertificatesWrapperVer0,\n default: CertificatesWrapper\n },\n },\n CertificateImage: {\n storage: {\n \"0.0.0\": CertificateImageVer0,\n default: CertificateImage\n },\n },\n GogoLogo: {\n storage: {\n \"0.0.0\": GogoLogoVer0,\n default: GogoLogo\n }\n },\n UserPlanInfoContainer: {\n storage: {\n \"0.0.0\": UserPlanInfoContainerVer0,\n default: UserPlanInfoContainer\n }\n },\n ArrowBoxWrapper: {\n storage: {\n \"0.0.0\": ArrowBoxWrapperVer0,\n default: ArrowBoxWrapper\n }\n }\n };\n\n const tmpComponentByPlansType = components[props.name][props.type || \"storage\"] || components[props.name][\"storage\"];\n\n const ComponentByPlansType = tmpComponentByPlansType[version] || tmpComponentByPlansType[\"default\"] || tmpComponentByPlansType;\n return ;\n}\n\nexport default PlansTypeComponent;","//@flow\n\nimport React, { useState, useEffect, useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\nimport { Period, PeriodSeparator } from \"../PricingPage/styles/Plans\";\nimport PlansTypeComponent from \"../PricingPage/styles/PlansTypeComponent\";\n\nimport { planBoxPeriodTexts, gaPeriods } from \"@pcloud/web-utilities/dist/plans/plansInfo\";\nimport { __ } from \"../../lib/utils\";\nimport { ColorType } from \"../../lib/types/dataTypes.components\";\n\ntype BoxPeriodProps = {\n onPeriodChange: (period: \"month\" | \"year\" | \"lifetime\") => void,\n periods?: Array<\"month\" | \"year\" | \"lifetime\">,\n selectedPeriod?: \"month\" | \"year\" | \"lifetime\",\n color?: ColorType,\n backgroundColorValue?: string,\n showBestValued?: boolean,\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\"\n};\n\nconst CONTWIDTHX2 = 300;\nconst CONTWIDTHX3 = 380;\n\nconst BoxPeriod = ({\n onPeriodChange,\n periods = [\"year\", \"lifetime\"],\n selectedPeriod = \"lifetime\",\n color = \"green\",\n backgroundColorValue,\n showBestValued = true,\n plansType = \"storage\",\n plansVersion = \"0.0.0\"\n}: BoxPeriodProps) => {\n const periodContainerWidth = periods.length === 3 ? CONTWIDTHX3 : CONTWIDTHX2;\n\n const { periodWidth, offsets } = useMemo(() => {\n const periodWidth = 100 / periods.length;\n const offsets = periods.reduce((offsetsOut, period, index) => {\n offsetsOut[period] = periodWidth * index;\n return offsetsOut;\n }, {});\n return {periodWidth, offsets};\n }, [periods]);\n\n const [chosenPeriod, setChosenPeriod] = useState(selectedPeriod);\n\n useEffect(() => {\n setChosenPeriod(selectedPeriod);\n }, [selectedPeriod, periods]); //[selectedPeriod, periods]\n\n const handleOnClick = (clickedPeriod, event) => {\n if (clickedPeriod === selectedPeriod) {\n return;\n }\n\n setChosenPeriod(clickedPeriod);\n onPeriodChange(clickedPeriod);\n };\n\n const renderPeriods = () => {\n return periods.map((period, index) => {\n return (\n \n {\n handleOnClick(period, event);\n }}\n color={color}\n width={periodWidth}\n data-testid={\"choose_\" + gaPeriods[period].toLocaleLowerCase()}\n className={`choose-period${period === selectedPeriod ? ` active` : ``}`}\n >\n {planBoxPeriodTexts[period]}\n \n {index !== periods.length - 1 ? : null}\n \n );\n });\n };\n\n return (\n \n \n {renderPeriods()}\n {(periods.indexOf(\"lifetime\") !== -1 && showBestValued) ? (\n \n \n {__(\"best_valued\")}\n \n ) : null}\n \n );\n};\n\nexport default BoxPeriod;\n\nconst BestValue = styled.div`\n position: absolute;\n top: -32px;\n left: 100%;\n\n @media (max-width: 768px) {\n display: none;\n }\n`;\n\nconst blackImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/p_crypto/black@2x.png' : 'images/p_crypto/black.png');\nconst BestValueArrow = styled.div`\n position: absolute;\n right: -30px;\n top: 3px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 78px;\n height: 26px;\n background-image: url(${blackImg});\n`;\n\nconst BestValueText = styled.div`\n font-family: \"Marck Script\";\n font-size: 19px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 0.8;\n letter-spacing: 0.38px;\n text-align: left;\n color: #000000;\n position: absolute;\n width: 92px;\n top: 37px;\n left: 12px;\n transition: all 0.3s ease-in-out;\n\n @media (min-width: 1350px) {\n width: 200px;\n top: 44px;\n }\n`;\n","//@ flow\n\nimport React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\n\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { ColorType } from \"../../lib/types/dataTypes.components\";\nimport { __ } from \"../../lib/utils\";\nimport PlansTypeComponent from \"../PricingPage/styles/PlansTypeComponent\";\n\ntype BoxHeaderProps = {\n title: string,\n subtitle: string,\n color?: ColorType,\n disabled?: boolean,\n className?: string,\n theme?: \"dark\" | \"light\",\n discountPeriod?: number,\n priorityLabel: boolean,\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n plansVersion: string\n};\n\nconst BoxHeader = ({\n title,\n subtitle,\n color = \"cyan\",\n disabled = false,\n className = \"\",\n theme = \"light\",\n discountPeriod,\n label,\n subtitlePosition,\n plansType = \"storage\",\n plansVersion = \"0.0.0\"\n}: BoxHeaderProps) => {\n const plansTypeProps = {\n type: plansType,\n plansVersion\n };\n\n return (\n \n {subtitlePosition == \"top\" && subtitle ? (\n {subtitle.replace(\"%limited_discount_period%\", 30 * discountPeriod)}\n ) : null}\n \n {label ? : null}\n {title}\n \n {subtitlePosition == \"bottom\" && subtitle ? (\n {subtitle.replace(\"%limited_discount_period%\", 30 * discountPeriod)}\n ) : null}\n \n )\n};\n\nexport default BoxHeader;\n\nconst Label = styled.div`\n display: inline-block;\n text-transform: uppercase;\n background-color: ${({disabled, theme, color}) => {\n if (color && !disabled) {\n return COLORS[color].mainColor\n } else if (disabled && theme === \"dark\") {\n return \"#888888\";\n } else if (disabled) {\n return \"#cccccc\";\n } else {\n return \"#212121\"\n }\n }};\n color: #fff;\n padding: 4px 6px;\n font-size: 14px;\n border-radius: 4px;\n margin-right: 6px;\n`;\n","import styled from \"styled-components\";\n\nexport const CenterAlign = styled.div`\n text-align: center;\n margin: 0 auto;\n`","//@flow\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport { __, signToCurrency } from \"../../lib/utils\";\nimport { CenterAlign } from \"../CommonStyledComponents\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport PlansTypeComponent from \"../PricingPage/styles/PlansTypeComponent\";\n\ntype BoxPriceProps = {\n price: number,\n currency: string,\n oldPrice?: number,\n slashPeriod?: string,\n periodText?: string,\n disabled?: boolean,\n className?: string,\n theme?: \"dark\" | \"light\",\n discountPeriod?: number,\n template?: \"row\" | \"column\",\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n};\n\nconst BoxPrices = ({\n price = 0,\n currency,\n oldPrice = 0,\n slashPeriod,\n periodText,\n disabled = false,\n className = \"\",\n theme = \"light\",\n discountPeriod,\n template = \"row\",\n showSaveLabel = false,\n color=\"cyan\",\n plansType = \"storage\",\n plansVersion = \"0.0.0\"\n}: BoxPriceProps) => {\n price = (price % 1 === 0) ? price : price.toFixed(2);\n oldPrice = (oldPrice % 1 === 0) ? oldPrice : oldPrice.toFixed(2);\n \n const priceFractions = (Number(price) + \"\").split('.');\n let priceDecimalPart = \"00\";\n \n if (priceFractions.length > 1) {\n priceDecimalPart = priceFractions[1].slice(0, 2);\n\n if (priceDecimalPart.length === 1) {\n priceDecimalPart += \"0\";\n }\n }\n\n const newPriceWholeNumber = price % 1 === 0 ? (price + \"\") : ((Math.floor(price)).toString());\n\n let Price = PriceRow;\n let OldPrice = OldPriceRow;\n let CurrencyCode = CurrencyCodeRow;\n let CrossLine = CrossLineRow;\n\n if (template == 'column') {\n Price = PriceColumn;\n OldPrice = OldPriceColumn;\n CurrencyCode = CurrencyCodeColumn;\n CrossLine = CrossLineColumn;\n }\n\n const renderOldPrice = () => {\n if (!(oldPrice && oldPrice !== price)) {\n return null;\n }\n\n return (\n \n {oldPrice}\n {signToCurrency[currency]}\n \n \n );\n };\n\n const renderSlashRow = () => {\n if (!(oldPrice && oldPrice !== price)) {\n return null;\n }\n\n return (\n \n /\n \n );\n };\n\n const renderNewPriceRow = () => {\n return (\n \n {price}\n {signToCurrency[currency]}\n \n );\n };\n\n const renderSlashPeriod = () => {\n return slashPeriod ? (\n \n {slashPeriod}\n \n ) : null;\n };\n\n const renderPeriodText = () => {\n if (!periodText) {\n return null;\n }\n\n return (\n \n {periodText.replace(\"%limited_discount_period%\", 30 * discountPeriod)}\n \n );\n };\n\n const renderSaveLabel = () => {\n if (!showSaveLabel) {\n return null;\n }\n\n return (\n \n {__(\"pricing_page_save_label\", \"Save %discount% %currency%\", {\n discount: oldPrice - price,\n currency: signToCurrency[currency]\n })}\n \n );\n };\n\n const renderPriceRow = () => {\n if (!price) {\n return (\n \n \n -\n \n \n );\n }\n\n return (\n \n {showSaveLabel && (oldPrice - price) > 0 ? renderPeriodText() : null}\n\n \n {renderNewPriceRow()}\n {renderSlashRow()}\n {renderOldPrice()}\n {renderSlashPeriod()}\n \n\n {oldPrice - price > 0 ? renderSaveLabel() : null}\n\n {!(showSaveLabel && (oldPrice - price) > 0) ? renderPeriodText() : null}\n \n );\n };\n\n const renderPriceColumn = () => {\n if (!price) {\n return null;\n }\n\n return (\n \n {showSaveLabel && (oldPrice - price) > 0 ? renderPeriodText() : null}\n \n {renderOldPrice()}\n \n \n {newPriceWholeNumber}\n \n {price % 1 !== 0 && \n \n .\n {priceDecimalPart}\n \n }\n \n {signToCurrency[currency]}\n \n \n\n {renderSlashPeriod}\n \n\n {oldPrice - price > 0 ? renderSaveLabel() : null}\n\n {!(showSaveLabel && (oldPrice - price) > 0) ? renderPeriodText() : null}\n \n );\n };\n\n return template === 'row' ? renderPriceRow() : (template == 'column' ? renderPriceColumn() : null);\n};\n\nexport default BoxPrices;\n\n// Template: column\nconst PricesWrapperColumn = styled.div``;\n\nconst PricesWrapperInnerColumn = styled.div``;\n\nconst PriceColumn = styled.div`\n line-height: 0.77;\n font-weight: bold;\n text-align: left;\n margin-top: 26px;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#e6e6e6\";\n } else {\n return \"#000000\";\n }\n }};\n\n @media (max-width: 768px) {\n margin-top: 20px;\n margin-bottom: 35px;\n text-align: center;\n }\n`;\n\nconst OldPriceColumn = styled.span`\n position: relative;\n font-size: 61px;\n line-height: 23px;\n font-weight: bold;\n text-align: left;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#bfbebe\";\n } else {\n return \"#d336c8\";\n }\n }};\n .old-price-value,\n .old-price-currency-code {\n opacity: 0.3;\n }\n`;\n\nconst CurrencyCodeColumn = styled.span`\n font-size: 42px;\n margin-left: 10px;\n`;\n\nconst CrossLineColumn = styled.div`\n position: absolute;\n left: -15px;\n top: 38px;\n width: calc(100% + 30px);\n height: 3px;\n background-color: ${props => (props.disabled ? \"#cccccc !important\" : \"#8b8b8b\")};\n`;\n\nconst ValueNewPriceColumn = styled.span`\n font-size: ${props => (props.fontSize ? props.fontSize : \"50\")}px;\n @media (max-width: 768px) {\n font-size: ${props => (props.fontSizeMobile ? props.fontSizeMobile : \"50\")}px;\n }\n @media (min-width: 769px) and (max-width: 800px) {\n font-size: ${props => (props.fontSizeTablet ? props.fontSizeTablet : \"50\")}px;\n }\n`;\n\nconst ValueDecimalPart = styled.span`\n font-size: ${props => (props.fontSize ? props.fontSize : \"20\")}px;\n @media (max-width: 768px) {\n font-size: ${props => (props.fontSizeMobile ? props.fontSizeMobile : \"20\")}px;\n }\n @media (min-width: 769px) and (max-width: 800px) {\n font-size: ${props => (props.fontSizeTablet ? props.fontSizeTablet : \"50\")}px;\n }\n position: absolute;\n letter-spacing: 2.67px;\n`;\nconst CurrencyCodeNewPrice = styled.span`\n font-size: ${props => (props.fontSize ? props.fontSize : \"20\")}px;\n @media (max-width: 768px) {\n font-size: ${props => (props.fontSizeMobile ? props.fontSizeMobile : \"20\")}px;\n }\n @media (min-width: 769px) and (max-width: 800px) {\n font-size: ${props => (props.fontSizeTablet ? props.fontSizeTablet : \"50\")}px;\n }\n letter-spacing: 1.56; \n`;\n\n// Template: row\nconst OldPriceRow = styled.span`\n position: relative;\n font-size: 38px;\n font-weight: 300;\n line-height: 1.19;\n letter-spacing: -1.05px;\n text-align: center;\n display: inline-block;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#bfbebe\";\n } else {\n return \"#aaaaaa\";\n }\n }};\n @media (max-width: 768px) {\n font-size: 32px;\n }\n`;\n\nconst PriceRow = styled.span`\n font-size: 38px;\n font-weight: bold;\n line-height: 1.19;\n letter-spacing: -1.05px;\n text-align: center;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#e6e6e6\";\n } else {\n return \"#000000\";\n }\n }};\n @media (max-width: 768px) {\n font-size: 32px;\n }\n`;\n\nconst PeriodText = styled.div`\n font-size: 14px;\n font-weight: normal;\n line-height: 1.21;\n letter-spacing: -0.35px;\n text-align: center;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#e6e6e6\";\n } else {\n return \"#868686\";\n }\n }};\n text-transform: uppercase;\n @media (max-width: 768px) {\n font-size: 12px;\n }\n`;\n\nconst CurrencyCodeRow = styled.span`\n font-size: 20px;\n letter-spacing: 0px;\n margin-left: 3px;\n @media (max-width: 768px) {\n font-size: 16px;\n }\n`;\n\nconst Value = styled.span``;\n\nconst CrossLineRow = styled.div`\n position: absolute;\n left: -4px;\n top: 19px;\n width: 110%;\n height: 1px;\n background-color: ${props => (props.disabled ? \"#cccccc !important\" : \"#aaaaaa\")};\n`;\n\nconst Slash = styled.span`\n margin: 0px 10px;\n font-size: 40px;\n font-weight: 300;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.19;\n letter-spacing: -1.05px;\n text-align: center;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#bfbebe\";\n } else {\n return \"#ececec\";\n }\n }};\n @media (max-width: 768px) {\n font-size: 32px;\n }\n`;\n\nconst SlashPeriod = styled.span`\n font-size: 21px;\n font-weight: 600;\n margin: 0 0 0 -3px;\n color: ${({ disabled, theme }) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#e6e6e6\";\n } else {\n return \"#2c2c2c\";\n }\n }};\n font-family: \"Roboto\", sans-serif;\n`;\n\nconst SaveLabel = styled.div`\n display: inline-block;\n min-width: 110px;\n box-sizing: border-box;\n color: ${({color}) => COLORS[color].mainColor};\n text-align: center;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: normal;\n text-transform: uppercase;\n padding: 4px 20px;\n border-radius: 8px;\n background: ${({color}) => COLORS[color].lightShade};\n margin: 8px auto 0 auto;\n\n @media (max-width: 768px) {\n border-radius: 4px;\n }\n`;\n","//@ flow\n\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport { CenterAlign } from \"../CommonStyledComponents\";\nimport { businessPrices } from \"@pcloud/web-utilities/dist/plans/prices\";\nimport { signToCurrency } from \"../../lib/utils\";\n\ntype BoxPriceProps = {\n currency: string,\n disabled?: boolean,\n className?: string,\n theme?: \"dark\" | \"light\",\n planId: 201 | 202,\n pricesToShow: \"both\" | \"monthly\" | \"yearly\"\n};\n\nconst BoxPricesBusiness = ({\n currency,\n disabled = false,\n className = \"\",\n theme = \"light\",\n planId,\n pricesToShow = \"both\"\n}: BoxPriceProps) => {\n const renderPrices = () => {\n if (pricesToShow === \"both\") {\n return (\n <>\n \n {__(\"Yearly Subscription\")}\n \n {businessPrices[planId][currency][\"year\"]}\n {signToCurrency[currency]}\n \n \n \n \n {__(\"Monthly Subscription\")}\n \n {businessPrices[planId][currency][\"month\"]}\n {signToCurrency[currency]}\n \n \n \n )\n } else if (pricesToShow === \"monthly\") {\n return (\n \n {__(\"Monthly Subscription\")}\n \n {businessPrices[planId][currency][\"month\"]}\n {signToCurrency[currency]}\n \n \n )\n } else if (pricesToShow === \"yearly\") {\n return (\n \n {__(\"Yearly Subscription\")}\n \n {businessPrices[planId][currency][\"year\"]}\n {signToCurrency[currency]}\n \n \n )\n }\n }\n return (\n \n \n \n {renderPrices()}\n \n \n \n {__(\"key_business_per_user_month\")}\n \n \n )\n};\n\nexport default BoxPricesBusiness;\n\nconst PricesWrapper = styled.div`\n max-width: 316px;\n margin: 32px auto 24px auto;\n font-family: Inter, Roboto;\n @media(max-width: 768px) {\n margin: 26px auto;\n }\n`;\n\nconst Price = styled.span`\n font-size: 42px;\n font-weight: bold;\n line-height: 1.19;\n letter-spacing: -1.05px;\n text-align: center;\n color: ${({disabled, theme}) => {\n if (disabled) {\n return \"#cccccc\";\n } else if (theme === \"dark\") {\n return \"#ffffff\";\n } else {\n return \"#000000\";\n }\n }};\n @media(max-width: 768px) {\n font-size: 32px;\n }\n`;\n\nconst BottomText = styled.div`\n font-size: 14px;\n font-weight: normal;\n line-height: 1.21;\n letter-spacing: -0.35px;\n text-align: center;\n color: ${({disabled, theme}) => {\n if (disabled) {\n return \"#cccccc !important\";\n } else if (theme === \"dark\") {\n return \"#ffffff\";\n } else {\n return \"#868686\";\n }\n }};\n text-transform: uppercase;\n @media(max-width: 768px) {\n font-size: 12px;\n }\n`;\n\nconst CurrencySign = styled.span`\n font-size: 22px;\n letter-spacing: -0.55px;\n text-align: center;\n line-height: 40px;\n vertical-align: top;\n @media(max-width: 768px) {\n font-size: 16px;\n }\n`;\n\nconst CurrencyCode = styled.span`\n font-size: 22px;\n letter-spacing: 0px;\n margin-left: 3px;\n @media(max-width: 768px) {\n font-size: 16px;\n }\n`;\n\nconst Value = styled.span``;\n\nconst PriceContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 6px;\n`;\n\nconst PriceBox = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Separator = styled.div`\n display: inline-block;\n height: 49px;\n width: 1px;\n background-color: #e5e5e5;\n margin: 0px 23px;\n`;\n\nconst PeriodText = styled.div`\n font-size: 11px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: normal;\n text-align: center;\n color: #888888;\n`;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgInfoIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 16,\n height: 16\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#d9d9d9\",\n d: \"M8 16a8.009 8.009 0 01-8-8 8.009 8.009 0 018-8 8.009 8.009 0 018 8 8.009 8.009 0 01-8 8zm0-9a1 1 0 00-1 1v3a1 1 0 001 1 1 1 0 001-1V8a1 1 0 00-1-1zm0-3a1 1 0 00-1 1 1 1 0 001 1 1 1 0 001-1 1 1 0 00-1-1z\"\n })));\n}\nexport default SvgInfoIcon;","//@flow\n\nimport React, { useState } from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport CheckIcon from \"../../svg/check-icon.svg\";\nimport InfoIcon from \"../../svg/info-icon.svg\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { v4 as uuidv4 } from 'uuid';\nimport PlansTypeComponent from \"../PricingPage/styles/PlansTypeComponent\";\n\ntype BoxFeatureProps = {\n feature: string,\n tooltip?: string,\n lastChild?: boolean,\n disabled?: boolean,\n className?: string,\n theme?: \"dark\" | \"light\",\n color?: string,\n showCheck?: boolean\n};\n\nconst BoxFeature = ({\n feature,\n tooltip,\n lastChild = false,\n disabled = false,\n className = \"\",\n theme,\n color,\n showCheck\n}: BoxFeatureProps) => {\n const [id] = useState(uuidv4());\n let colorValue = \"#17bed0\";\n if (disabled) {\n colorValue = \"#ccc\";\n } else if (color && COLORS[color]) {\n colorValue = typeof COLORS[color].bulletsColor !== 'undefined' && COLORS[color].bulletsColor !== '' ? COLORS[color].bulletsColor : COLORS[color].mainColor;\n }\n\n return (\n \n {showCheck ? : null}\n \n {feature}\n \n {tooltip ? (\n \n \n \n \n ) : null}\n \n );\n};\n\nexport default BoxFeature;\n\nconst FeatureWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: ${props => (props.lastChild ? \"none\" : \"1px solid #f2f2f2\")};\n border-color: ${({ theme }) => {\n if (theme === \"dark\") {\n return \"rgba(255,255,255, 0.13)\";\n } else {\n return \"#f2f2f2\";\n }\n }};\n width: 100%;\n\n svg {\n flex-shrink: 0;\n }\n\n .feature-tooltip {\n padding: 15px 20px;\n max-width: 250px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n text-align: center;\n }\n`;\n\nconst FeatureText = styled.div`\n padding: 8px 0px;\n /* font-family: Inter, Roboto; */\n font-size: 16px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: -0.4px;\n text-align: left;\n color: ${({ disabled, theme }) => {\n if (disabled && theme === \"dark\") {\n return \"rgba(255, 255, 255, 0.3)\";\n } else if (disabled) {\n return \"#cccccc\";\n } else if (theme === \"dark\") {\n return \"#e6e6e6\";\n } else {\n return \"#000000\";\n }\n }};\n margin-left: 13px;\n flex-grow: 1;\n`;\n","//@flow\n\nimport React from \"react\";\nimport styled from \"styled-components\";\n\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { ColorType } from \"../../lib/types/dataTypes.components\";\nimport { detectIsRetina } from \"@pcloud/web-utilities/dist/lib/utils\";\n\ntype BoxDiscsountProps = {\n value: number | string,\n type: \"percent\" | \"fixedamount\" | \"text\",\n color?: ColorType,\n theme?: string,\n currency?: string,\n disabled?: boolean,\n className?: string,\n background?: string,\n backgroundRetina?: String,\n width?: string,\n height?: string,\n positionLeft?: string,\n template: \"corner\" | \"paperclip\" | \"full-width\"\n};\n\nconst BoxDiscount = ({\n value,\n type = \"percent\",\n color = \"cyan\",\n theme,\n currency,\n disabled = false,\n className = \"\",\n template = \"corner\",\n width,\n height,\n positionLeft,\n background,\n backgroundRetina\n}: BoxDiscsountProps) => {\n\n let DiscountWrap = DiscountWrapCorner;\n let DiscountValueWrap = DiscountValueWrapCorner;\n\n switch (template) {\n case \"paperclip\":\n DiscountWrap = DiscountWrapPaperclip;\n DiscountValueWrap = DiscountValueWrapPaperclip;\n break;\n case \"full-width\":\n DiscountWrap = DiscountWrapFullWidth;\n DiscountValueWrap = DiscountValueWrapFullWidth;\n break;\n }\n\n const isRetina = detectIsRetina();\n\n if (!value) {\n return null;\n }\n\n return (\n \n \n {type !== \"text\" ? - : null}\n {type === \"fixedamount\" ? {currency} : null}\n {value}\n {type === \"percent\" ? % : null}\n \n \n )\n};\n\nexport default BoxDiscount;\n\n// template: \"full-width\"\nconst DiscountWrapFullWidth = styled.div`\n width: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 15px 20px;\n background: ${props => props.background ? props.background : 'transparent'};\n`;\n\nconst DiscountValueWrapFullWidth = styled.div`\n color: white;\n font-size: 22px;\n`;\n\n// template: \"paperclip\"\nconst DiscountWrapPaperclip = styled.div`\n background: ${props => props.background ? props.background : 'transparent'};\n width: ${props => props.width ? props.width : 'initial'};\n height: ${props => props.height ? props.height : 'initial'};\n position: relative;\n left: ${props => props.positionLeft ? props.positionLeft : 'initial'};\n background-size: ${props => props.background ? 'contain' : 'initial'};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DiscountValueWrapPaperclip = styled.div`\n color: white;\n font-size: 30px;\n position: relative;\n top: -7px;\n`;\n\n// template: \"corner\"\nconst DiscountWrapCorner = styled.div`\n position: absolute;\n width: 0;\n height: 0;\n top: 0;\n right: 0;\n border-left: 80px solid transparent;\n border-bottom: 80px solid transparent;\n border-right: 80px solid ${({ disabled, theme, color }) => {\n if (disabled && theme === \"dark\") {\n return \"#888888\";\n } else if (disabled) {\n return \"#cccccc\";\n } else {\n return COLORS[color].mainColor;\n }\n }};\n border-top: 0 solid transparent;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n text-align: center;\n\n @media(max-width: 768px) {\n border-left-width: 60px;\n border-bottom-width: 60px;\n border-right-width: 60px;\n }\n`;\n\nconst DiscountValueWrapCorner = styled.div`\n position: absolute;\n top: 12px;\n left: 14px;\n width: 80px;\n font-family: Inter, Roboto;\n font-size: 23px;\n font-weight: 900;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.21;\n letter-spacing: -0.77px;\n text-align: center;\n color: ${props => COLORS[props.color].text};\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n\n @media(max-width: 768px) {\n top: 10px;\n left: 0px;\n font-size: 18px;\n }\n`;\n\nconst MinusSign = styled.span``;\nconst Currency = styled.span``;\nconst Value = styled.span``;\nconst PercentSign = styled.span``;\n","//@ flow\n\nimport React from \"react\";\nimport styled, { keyframes } from \"styled-components\";\n\ntype BoxDisabledProps = {\n title: string,\n subtitle: string,\n actionText?: string,\n handleAction?: event => void,\n wrapperClassName?: string\n};\n\nconst BoxDisabled = ({\n title,\n subtitle,\n actionText,\n handleAction,\n wrapperClassName\n}: BoxDisabledProps) => {\n return (\n \n {title}\n {(subtitle && subtitle != \" \") ? (\n {subtitle}\n ) : null}\n {actionText ? (\n {actionText}\n ) : null}\n \n )\n};\n\nexport default BoxDisabled;\n\nconst DisabledWrapper = styled.div`\n width: 100%;\n box-sizing: border-box;\n border: solid 1px #ede9cd;\n background-color: #fffbdd;\n padding: 20px;\n margin: 46px auto 56px auto;\n`;\n\nconst DisabledTitle = styled.div`\n /* font-family: Inter, Roboto; */\n font-size: 15px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: normal;\n text-align: center;\n color: #000000;\n \n`;\n\nconst DisabledSubtitle = styled.div`\n /* font-family: Inter, Roboto; */\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.21;\n letter-spacing: -0.28px;\n text-align: center;\n color: #000000;\n margin-top: 15px;\n`;\n\nconst ActionButton = styled.div`\n /* font-family: Inter, Roboto; */\n font-size: 15px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: normal;\n text-align: center;\n color: #17bed0;\n margin-top: 15px;\n cursor: pointer;\n`;\n","//@flow\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\n\nconst PaymentOptions = () => (\n \n \n \n \n \n \n \n);\n\nexport default PaymentOptions;\n\nconst PaymentOptionsWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: absolute;\n width: calc(100% - 80px);\n left: 40px;\n bottom: 36px;\n\n @media (max-width: 768px) {\n position: static;\n width: 100%;\n margin-top:20px;\n }\n`;\n\nconst PaymentIcon = styled.div`\n display: inline-block;\n width: 54px;\n height: 36px;\n background-repeat: no-repeat;\n background-size: contain;\n background-position: center;\n`;\n\nconst visaImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/cards/visa@2x.png' : 'images/plans/cards/visa.png');\nconst VisaIcon = styled(PaymentIcon)`\n background-image: url(${visaImg});\n`;\n\nconst masterImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/cards/mastercard@2x.png' : 'images/plans/cards/mastercard.png');\nconst MasterCardIcon = styled(PaymentIcon)`\n background-image: url(${masterImg});\n`;\n\nconst paypalImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/cards/paypal@2x.png' : 'images/plans/cards/paypal.png');\nconst PaypalIcon = styled(PaymentIcon)`\n background-image: url(${paypalImg});\n`;\n\nconst americanExpressImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/cards/american_express@2x.png' : 'images/plans/cards/american_express.png');\nconst AmericanExpressIcon = styled(PaymentIcon)`\n background-image: url(${americanExpressImg});\n`;\n\nconst discoverImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/plans/cards/discover@2x.png' : 'images/plans/cards/discover.png');\nconst DiscoverIcon = styled(PaymentIcon)`\n background-image: url(${discoverImg});\n`;","// @flow\n\nimport React from \"react\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport * as Style from \"../styles/Plans\";\nimport PlansTypeComponent from \"../styles/PlansTypeComponent\";\n\nimport {\n planBoxTexts,\n planBoxPeriodTexts,\n notEligibleTexts,\n notEligibleTextsForGetPlansApi,\n testPlanNames,\n} from \"@pcloud/web-utilities/dist/plans/plansInfo\";\n\nimport { ColorType, PlanIDType } from \"../../../lib/types/dataTypes.components\";\n\nimport { ButtonWithIcon } from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\nimport { BoxHeader, BoxPrices, BoxFeature, BoxDiscount } from \"../../PlansBox/index.js\";\n\ntype DiscountType = {\n value: number,\n type: \"percent\" | \"fixedamount\",\n};\n\ntype PlanBoxProps = {\n planId: PlanIDType,\n billingPeriod: \"free\" | \"trial\" | \"month\" | \"year\" | \"lifetime\",\n isAddStoragePlan: boolean,\n color: ColorType,\n price: number,\n currency: \"$\" | \"€\" | \"₤\",\n buttonAction: (planId: PlanIDType, billingPeriod: \"free\" | \"trial\" | \"month\" | \"year\" | \"lifetime\") => void,\n oldPrice?: number,\n periodText?: string,\n discount?: DiscountType,\n disabled?: boolean,\n disabledReason?: string,\n secondaryColor?: ColorType,\n borderRadius?: number,\n hideDescription?: boolean,\n newLabel?: boolean,\n getTotalStorage?: () => void,\n getTotalTraffic?: () => void,\n maxNumberOfFeaturesToShow?: boolean,\n featuresIdsToRender?: Array,\n showBestPriceByRandomGirl: boolean,\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n plansVersion: string,\n showPlanDescriptionText: boolean,\n};\n\nconst PlanBox = ({\n planId,\n billingPeriod,\n isAddStoragePlan = false,\n color,\n buttonColor,\n price,\n currency = \"$\",\n buttonAction = () => { },\n oldPrice,\n periodText,\n discount = {},\n disabled = false,\n disabledReason,\n borderRadius,\n newLabel,\n getTotalStorage,\n getTotalTraffic,\n maxNumberOfFeaturesToShow = 2, // -1 is for no limit.\n featuresIdsToRender = [],\n showBestPriceByRandomGirl = false,\n hideDiscountPercentage = true,\n plansType = \"storage\",\n plansVersion = \"0.0.0\",\n showPlanDescriptionText = false,\n showSaveLabel = false,\n subtitlePosition = \"bottom\"\n}: PlanBoxProps) => {\n const texts = planBoxTexts[planId];\n\n const textTypeKey = isAddStoragePlan ? \"add\" : billingPeriod;\n\n const planTexts = {\n title: texts.title ? (texts.title[textTypeKey] || texts.title[\"default\"]) : \"\",\n titleShort: (isAddStoragePlan ? texts?.title?.addMobile : texts?.title?.mobile) || \"\",\n features: texts.features ? (texts.features[textTypeKey] || texts.features[\"default\"]) : [],\n button: (texts.buttonText ? (texts.buttonText[textTypeKey] || texts.buttonText[\"default\"]) : \"\").toUpperCase(),\n subtitle: texts.subtitle || \"\",\n description: texts.description || \"\"\n }\n \n const isRetina = window.devicePixelRatio > 1;\n\n const renderFeatures = (maxNumberOfFeaturesToShow, featureIdsToRender) => {\n let featuresТоRender = [];\n if (featureIdsToRender && featureIdsToRender.length > 0) {\n featuresТоRender = featureIdsToRender.map(featureIdToRender => planTexts.features.find(({id}) => id == featureIdToRender));\n } else {\n // Render first X features only.\n featuresТоRender = maxNumberOfFeaturesToShow !== -1 ? planTexts.features.slice(0, maxNumberOfFeaturesToShow) : planTexts.features;\n }\n\n return featuresТоRender.map(({ feature, tooltip }, index) => {\n if (feature.indexOf(\"%amount%\") !== -1) {\n feature = feature.replace(\"%amount%\", getTotalStorage(planId));\n }\n\n if (feature.indexOf(\"%traffic_amount%\") !== -1) {\n feature = feature.replace(\"%traffic_amount%\", getTotalTraffic(planId));\n }\n\n return (\n \n );\n });\n };\n\n const renderTopRightCorner = () => {\n const { value, type } = discount;\n\n if (value && type && !hideDiscountPercentage) {\n return (\n \n );\n }\n\n return null;\n };\n\n const handleButtonClick = (event) => {\n disabled ? event.preventDefault() : buttonAction(planId, billingPeriod);\n };\n\n return (\n \n \n {renderTopRightCorner()}\n \n \n \n \n \n {disabled && disabledReason ? (\n \n ) : null}\n\n {showPlanDescriptionText && planTexts.description != \"\" ? (\n {planTexts.description}\n ) : null}\n\n \n {renderFeatures(maxNumberOfFeaturesToShow, featuresIdsToRender)}\n \n {showBestPriceByRandomGirl && \n \n \n \"Best\n {__(\"landing_lifetime_bestvalued\")}\n \n \"Girl\"\n \n }\n \n \n );\n};\n\nexport default PlanBox;\n","import styled, { css, keyframes } from \"styled-components\";\n\nconst spin = keyframes`\n 0% {\n transform:rotate(0deg);\n }\n 100% {\n transform:rotate(360deg);\n }\n`;\n\nconst fadein = keyframes`\n 0% {\n opacity: 0;\n display: block;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nconst fadeout = keyframes`\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n`;\n\nconst SpinContainer = styled.div`\n position: absolute;\n width: ${({width}) => width || 64}px;\n height: ${({height}) => height || 64}px;\n z-index: 3;\n /* background-color: inherit; */\n animation-name: ${spin};\n animation-duration: 600ms;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n z-index: 100;\n\n ${({position}) => {\n if (position === \"right\") {\n return css`\n right: 0;\n top: 50%;\n margin: -${({height}) => (height / 2) || 32}px 0 0 -${({width}) => (width) || 64}px;\n `;\n } else {\n return css`\n left: 50%;\n top: 50%;\n margin: -${({height}) => (height / 2) || 32}px 0 0 -${({width}) => (width / 2) || 32}px;\n `;\n }\n }}\n`;\n\nexport default SpinContainer;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLoadingIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 64.001,\n height: 63.999\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e4e4e4\",\n d: \"M32.001 64a31.8 31.8 0 01-12.456-2.515 31.893 31.893 0 01-10.171-6.858 31.89 31.89 0 01-6.858-10.171A31.8 31.8 0 01.001 32a31.806 31.806 0 012.515-12.456A31.9 31.9 0 019.374 9.372a31.893 31.893 0 0110.171-6.858A31.8 31.8 0 0132.001 0a31.8 31.8 0 0112.456 2.515 31.883 31.883 0 0110.171 6.858 31.892 31.892 0 016.859 10.172A31.806 31.806 0 0164.001 32a31.8 31.8 0 01-2.515 12.455 31.892 31.892 0 01-6.859 10.171 31.883 31.883 0 01-10.171 6.858A31.8 31.8 0 0132.001 64zm0-59a26.833 26.833 0 00-10.509 2.122 26.921 26.921 0 00-8.583 5.786 26.907 26.907 0 00-5.786 8.582A26.826 26.826 0 005.001 32a26.826 26.826 0 002.122 10.51 26.908 26.908 0 005.786 8.582 26.922 26.922 0 008.583 5.786A26.833 26.833 0 0032.001 59a26.83 26.83 0 0010.51-2.122 26.914 26.914 0 008.583-5.786 26.922 26.922 0 005.786-8.582A26.837 26.837 0 0059.001 32a26.837 26.837 0 00-2.122-10.51 26.922 26.922 0 00-5.786-8.582 26.914 26.914 0 00-8.583-5.786A26.83 26.83 0 0032.001 5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"loading-icon_svg__color-path\",\n fill: \"#bc3232\",\n d: \"M.051 32H0v-.499c0-.055 0-.109.005-.163a31.75 31.75 0 012.509-11.793A31.932 31.932 0 019.372 9.373a31.873 31.873 0 0110.171-6.858A31.751 31.751 0 0131.307.007c.064 0 .129-.007.194-.007h.498v.05a2.5 2.5 0 012 2.451 2.5 2.5 0 01-2 2.449V5h-.009a26.84 26.84 0 00-10.5 2.12 26.946 26.946 0 00-8.582 5.786 26.942 26.942 0 00-5.786 8.584A26.808 26.808 0 005 32h-.048a2.5 2.5 0 01-2.451 2 2.5 2.5 0 01-2.45-2z\"\n })));\n}\nexport default SvgLoadingIcon;","import React, { useState, useMemo } from \"react\";\n\nimport { CSSTransition } from \"react-transition-group\";\nimport styled from \"styled-components\";\n\nimport type { Userinfo } from \"../../../lib/types/dataTypes.components\";\nimport { __ } from \"../../../lib/utils\";\nimport { TB_PER_TRAFFIC_COUNT } from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport { hiDPI } from \"polished\";\n\ntype Props = {\n user: Userinfo,\n trafficPlanBoxWidth: string,\n hideOnMobile: boolean,\n hideOnDesktop: boolean,\n showInfoBox: boolean,\n onCloseInfoBox: () => void\n};\n\nconst TrafficPlanInfoBox = ({\n user,\n trafficPlanBoxWidth = \"442px\",\n hideOnMobile = false,\n hideOnDesktop = false,\n showInfoBox = true,\n onCloseInfoBox = null\n}: Props) => {\n\n const currentUserTrafficMessage = useMemo(() => user && user.planparams && user.planparams.additionaltraffic ? __(\"traffic_current\").replace(\"%amount%\", user.planparams.additionaltraffic * TB_PER_TRAFFIC_COUNT) : null, [user]);\n\n return (\n \n {}}\n onExited={() => {}}\n appear\n >\n \n onCloseInfoBox()}/>\n \n \n {currentUserTrafficMessage ? {currentUserTrafficMessage} : null }\n

{__(\"traffic_info1\")}

\n
    \n
  • {__(\"traffic_info1_1\")}
  • \n
  • {__(\"traffic_info1_2\")}
  • \n
\n

{__(\"traffic_info2\")}

\n
\n
\n \n
\n );\n}\n\nexport default TrafficPlanInfoBox;\n\nconst Wrapper = styled.div`\n ${({hideOnMobile}) => {\n if (hideOnMobile) {\n return `\n @media (max-width: 1100px) {\n display: none;\n }\n `\n }\n }}\n\n ${({hideOnDesktop}) => {\n if (hideOnDesktop) {\n return `\n @media (min-width: 1100px) {\n display: none;\n }\n `\n }\n }}\n \n .fade-scale-enter {\n transform: scale(0.9);\n opacity: 0;\n border-radius: 50px;\n }\n .fade-scale-exit {\n transform: scale(1);\n opacity: 1;\n border-radius: 18px;\n }\n .fade-scale-enter-active {\n transform: scale(1);\n opacity: 1;\n border-radius: 18px;\n }\n .fade-scale-exit-active {\n transform: scale(0.9);\n opacity: 0;\n border-radius: 30px;\n }\n .fade-scale-enter-active,\n .fade-scale-exit-active {\n transform-origin: 100% 0px;\n transition: all 200ms ease-in-out;\n }\n`;\n\nconst InfoBox = styled.div`\n display: inline-block;\n position: relative;\n border: 1px solid #daf0f3;\n -webkit-text-decoration: none;\n text-decoration: none;\n border-radius: 9px;\n padding: 20px;\n background-color: #def5f8;\n width: 260px;\n position: absolute;\n top: 1px;\n left: ${({trafficPlanBoxWidth}) => trafficPlanBoxWidth ? `calc(50% + (${trafficPlanBoxWidth} / 2) + 22px)` : `calc(100% + 22px)`};\n text-align: center;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n left: -28px;\n top: 20%;\n width: 0;\n height: 0;\n border: 14px solid transparent;\n border-right-color: #daf0f3;\n }\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: -28px;\n top: 20%;\n width: 0;\n height: 0;\n border: 14px solid transparent;\n border-right-color: #def5f8;\n }\n\n @media (max-width: 1100px) {\n position: relative;\n top: 0px;\n left: 0px;\n width: 100%;\n box-sizing: border-box;\n margin-bottom: 30px;\n\n &:before {\n display: none;\n border: none;\n }\n\n &:after {\n display: none;\n border: none;\n }\n }\n`;\n\nconst TrafficIcon = styled.div`\n display: inline-block;\n width: 64px;\n height: 64px;\n background-size: 64px 64px;\n background-repeat: no-repeat;\n background-position: 0 0;\n background-color: transparent;\n background-image: url(${require(\"../../../../new_site/images/traffic/traffic-icon.png\")});\n ${hiDPI(1.5)} {\n background-image: url(${require(\"../../../../new_site/images/traffic/traffic-icon@2x.png\")});\n }\n\n @media (max-width: 1100px) {\n display: none;\n }\n`;\n\nconst CloseIcon = styled.div`\n display: inline-block;\n width: 18px;\n height: 18px;\n background-size: 18px 18px;\n background-repeat: no-repeat;\n background-position: 0 0;\n background-color: transparent;\n background-image: url(${require(\"../../../../new_site/images/traffic/close.png\")});\n ${hiDPI(1.5)} {\n background-image: url(${require(\"../../../../new_site/images/traffic/close@2x.png\")});\n }\n\n position: absolute;\n top: 10px;\n right: 10px;\n cursor: pointer;\n`;\n\nconst TrafficDescription = styled.div`\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.38;\n text-align: left;\n color: #000;\n margin-top: 12px;\n\n ul {\n padding-left: 30px;\n margin: 12px auto;\n }\n\n strong {\n display: inline-block;\n font-weight: bold;\n margin-bottom: 12px;\n width: 100%;\n text-align: left;\n font-size: 18px;\n }\n`;","//@flow\n\nimport React, { useMemo } from \"react\";\nimport { PlanType } from \"../../../lib/types/PlanType\";\nimport type { Userinfo, CurrencyType, PeriodType } from \"../../../lib/types/dataTypes.components\";\nimport { __ } from \"../../../lib/utils\";\n\nimport { CSSTransition } from \"react-transition-group\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\nimport styled from \"styled-components\";\n\nimport { notEligibleTexts } from \"@pcloud/web-utilities/dist/plans/plansInfo\";\nimport { ButtonWithIcon } from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\nimport RangeNumberInput from \"@pcloud/web-utilities/dist/resources/components/RangeNumberInput\";\nimport { BoxPrices } from \"../../PlansBox\";\n\nimport { bytesToUnit } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\nimport TrafficPlanInfoBox from \"./TrafficPlanInfoBox\";\n\ntype Props = {\n plan: PlanType,\n period: PeriodType,\n onGoToNextTrafficPlan: (event) => void,\n onGoToPrevTrafficPlan: (event) => void,\n buttonAction: (plan: PlanType, period: PeriodType) => void,\n user: Userinfo,\n currency: CurrencyType,\n minTraffic: number,\n maxTraffic: number,\n underPricesPeriodText: string,\n showInfoTooltip: boolean,\n onTrafficChange: () => void,\n trafficUnit: 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB',\n trafficPlanBoxWidth: string,\n hideInfoBoxOnMobile: boolean,\n hideInfoBoxOnDesktop: boolean,\n showTrafficInfoBox: boolean,\n onCloseTrafficInfoBox: () => void\n}\n\nconst TrafficPlanBox = ({\n plan,\n period,\n onGoToNextTrafficPlan = (event) => {},\n onGoToPrevTrafficPlan = (event) => {},\n buttonAction = () => {},\n user,\n currency = \"$\",\n minTraffic,\n maxTraffic,\n underPricesPeriodText = null,\n showInfoTooltip = true,\n onTrafficChange = () => {},\n trafficUnit = \"TB\",\n trafficPlanBoxWidth = \"442px\",\n hideInfoBoxOnMobile = false,\n hideInfoBoxOnDesktop = false,\n showTrafficInfoBox = true,\n onCloseTrafficInfoBox = () => {}\n}: Props) => {\n\n const disabledReason = useMemo(() => !plan.canbuy ? notEligibleTexts[\"plan_upgrade_restrictions\"] : null, [plan]);\n\n const handleButtonClick = (event) => {\n disabledReason ? event.preventDefault() : buttonAction(plan, period);\n };\n\n const bytesToTrafficUnit = (value) => {\n return bytesToUnit(value, trafficUnit);\n };\n\n return (\n \n \n \n \n {}}\n onExited={() => {}}\n appear\n >\n {disabledReason}\n \n \n {user && user.planparams && user.planparams.additionaltraffic && !disabledReason ? (\n {__(\"traffic_change_to\")}\n ) : null }\n \n \n \n \n \n {disabledReason ? (\n \n ) : null}\n \n);\n};\n\nexport default TrafficPlanBox;\n\nconst Wrapper = styled.div`\n display: block;\n width: ${({width}) => width ? width : \"442px\"};\n margin: 0 auto;\n padding: 30px;\n box-sizing: border-box;\n border-radius: 18px;\n box-shadow: 4px 4px 4px 0 rgba(0, 0, 0, 0.01);\n background-color: #fff;\n position: relative;\n\n .tooltip {\n padding: 15px 20px;\n max-width: 250px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n }\n\n .traffic-box-prices-wrapper {\n max-width: inherit;\n }\n\n @media (max-width: 768px) {\n width: 100%;\n border-radius: 0px;\n max-width: ${({width}) => width ? width : \"442px\"};\n }\n`;\n\nconst BoxTitle = styled.h2`\n text-align: center;\n font-weight: bold;\n letter-spacing: -0.5px;\n margin-bottom: 20px;\n font-size: 22px;\n`;\n\nconst Separator = styled.div`\n width: 100%;\n height: 1px;\n background-color: #eeeeee;\n margin: 40px auto 30px auto;\n`;\n\nconst RangeInputContainer = styled.div``;\n\nconst FadeTranstionContainer = styled.div`\n .fade-enter {\n opacity: 0;\n }\n .fade-exit {\n opacity: 1;\n }\n .fade-enter-active {\n opacity: 1;\n }\n .fade-exit-active {\n opacity: 0;\n }\n .fade-enter-active,\n .fade-exit-active {\n transition: opacity 250ms ease-in-out;\n }\n`;\n\nconst Message = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 9px;\n border: solid 1px #fcf2d5;\n background-color: #fff8e0;\n font-size: 15px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: -0.15px;\n text-align: center;\n color: #000;\n /* position: absolute; */\n width: 100%;\n /* min-height: 100%; */\n padding: 20px;\n margin-bottom: 20px;\n box-sizing: border-box;\n\n @media (max-width: 768px) {\n font-size: 13px;\n }\n`;","//@flow\n\nimport React, { useEffect, useState, useMemo } from \"react\";\nimport { PlanType } from \"../../../lib/types/PlanType\";\nimport TrafficPlanBox from \"./TrafficPlanBox\";\nimport type { Userinfo, CurrencyType, PeriodType } from \"../../../lib/types/dataTypes.components\";\nimport { bytesToUnit } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\nimport { hrefSearch } from \"@pcloud/web-utilities/dist/lib/utils\";\n\ntype Props = {\n plans: {[period: PeriodType]: [PlanType]},\n chosenPeriod: PeriodType,\n periods: [PeriodType],\n user: Userinfo,\n currency: CurrencyType,\n underPricesPeriodText: string,\n buttonAction: (plan: PlanType, period: PeriodType) => void,\n trafficUnit: 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB',\n selectedPlanTraffic: number,\n onSelectedPlanTrafficChange: (selectedPlanTraffic: number) => void,\n trafficPlanBoxWidth: string,\n hideInfoBoxOnMobile: boolean,\n hideInfoBoxOnDesktop: boolean,\n showTrafficInfoBox: boolean,\n onCloseTrafficInfoBox: () => void\n}\n\nconst TrafficPlanBoxes = ({\n plans,\n chosenPeriod,\n periods,\n user,\n currency,\n underPricesPeriodText,\n buttonAction,\n trafficUnit = \"TB\",\n selectedPlanTraffic = null,\n onSelectedPlanTrafficChange = (selectedPlanTraffic: number) => {},\n trafficPlanBoxWidth = \"442px\",\n hideInfoBoxOnMobile = false,\n hideInfoBoxOnDesktop = false,\n showTrafficInfoBox = true,\n onCloseTrafficInfoBox = () => {}\n}: Props) => {\n \n const [trafficPlans, setTrafficPlans] = useState([]);\n const [selectedPlanIndex, setSelectedPlanIndex] = useState(0);\n\n const preselectedTraffic = useMemo(() => {\n const trafficParam = hrefSearch(\"traffic\");\n if (trafficParam) {\n return Number(trafficParam);\n }\n\n // Check with the userinfo subscription.\n if (user) {\n const {lastsubscription, planparams} = user;\n if (lastsubscription &&\n lastsubscription.period && lastsubscription.period != chosenPeriod && \n planparams && planparams.additionaltraffic) {\n // Select next possible plan.\n return Number(planparams.additionaltraffic) + 1;\n }\n }\n \n return 0;\n }, [user]);\n\n useEffect(() => {\n if (plans[chosenPeriod].length === 0) {\n return;\n }\n\n // API returns plans in random order, so we need to sort them ascending by traffic param.\n const newTrafficPlansSorted = [...plans[chosenPeriod]].sort((planA, planB) => planA.traffic > planB.traffic ? 1 : -1);\n\n // Remove plans which cannot be bought (probably already bought).\n const newTrafficPlans = newTrafficPlansSorted.filter(plan => plan.canbuy);\n \n if (newTrafficPlans.length == 0) {\n if (selectedPlanTraffic !== null) {\n // Switched between periods.\n newTrafficPlans.push(newTrafficPlansSorted.find((plan, index) => selectedPlanTraffic <= bytesToTrafficUnit(plan.traffic * plan.trafficquota) || index === newTrafficPlansSorted.length - 1));\n } else {\n // Initial load. No available traffic plans to buy \n // Check with the userinfo subscription.\n if (user && user.planparams && user.planparams.additionaltraffic) {\n const trafficParam = preselectedTraffic > Number(user.planparams.additionaltraffic) + 1 ? preselectedTraffic : Number(user.planparams.additionaltraffic) + 1;\n newTrafficPlans.push(newTrafficPlansSorted.find((plan, index) => trafficParam <= plan.traffic || index === newTrafficPlansSorted.length - 1));\n } else {\n // Check for available plan in other shown periods.\n let availableTrafficPlanFromOtherPeriod = null;\n for (const period of periods) {\n if (chosenPeriod === period) {\n continue;\n }\n\n // API returns plans in random order, so we need to sort them ascending by traffic param.\n const trafficPlansSorted = [...plans[period]].sort((planA, planB) => planA.traffic > planB.traffic ? 1 : -1);\n availableTrafficPlanFromOtherPeriod = trafficPlansSorted.find(plan => plan.canbuy);\n if (availableTrafficPlanFromOtherPeriod) {\n break;\n }\n }\n\n newTrafficPlans.push(\n newTrafficPlansSorted.find((plan, index) => {\n if (index === newTrafficPlansSorted.length - 1) {\n return true;\n }\n\n if (preselectedTraffic > 0) {\n if (plan.traffic >= preselectedTraffic) {\n if ((!availableTrafficPlanFromOtherPeriod || availableTrafficPlanFromOtherPeriod.traffic <= preselectedTraffic)) {\n return true;\n } else if (availableTrafficPlanFromOtherPeriod && (availableTrafficPlanFromOtherPeriod.traffic * availableTrafficPlanFromOtherPeriod.trafficquota) <= plan.traffic * plan.trafficquota) {\n return true;\n }\n }\n } else if (availableTrafficPlanFromOtherPeriod && (availableTrafficPlanFromOtherPeriod.traffic * availableTrafficPlanFromOtherPeriod.trafficquota) <= plan.traffic * plan.trafficquota) {\n return true;\n }\n })\n );\n }\n }\n }\n\n if (selectedPlanTraffic === null) {\n // Initially preselected traffic. || No initial value -> set default to the lowest possible traffic.\n const newSelectedPlanIndex = newTrafficPlans.findIndex((plan, index) => plan.traffic >= preselectedTraffic || index === newTrafficPlans.length - 1);\n setSelectedPlanIndex(newSelectedPlanIndex);\n onSelectedPlanTrafficChange(bytesToTrafficUnit(newTrafficPlans[newSelectedPlanIndex].traffic * newTrafficPlans[newSelectedPlanIndex].trafficquota));\n } else {\n // Switched between periods. \n selectPlanTraffic(selectedPlanTraffic, newTrafficPlans);\n }\n \n setTrafficPlans(newTrafficPlans);\n }, [plans, chosenPeriod]);\n\n const bytesToTrafficUnit = (value) => {\n return bytesToUnit(value, trafficUnit);\n };\n\n const onTrafficChange = (inputTraffic, callback) => {\n const newTraffic = selectPlanTraffic(inputTraffic, trafficPlans);\n \n if (callback) {\n callback(newTraffic);\n }\n };\n\n const selectPlanTraffic = (inputTraffic, plans) => {\n inputTraffic = Math.round(inputTraffic);\n const minTraffic = bytesToTrafficUnit(plans[0].traffic * plans[0].trafficquota);\n const maxTraffic = bytesToTrafficUnit(plans[plans.length - 1].traffic * plans[plans.length - 1].trafficquota);\n const currentTraffic = bytesToTrafficUnit(plans[selectedPlanIndex].traffic * plans[selectedPlanIndex].trafficquota);\n let newTraffic = currentTraffic;\n\n if (inputTraffic >= minTraffic && inputTraffic <= maxTraffic && inputTraffic !== currentTraffic) {\n // First gt or equal the input traffic.\n const newSelectedPlanIndex = plans.findIndex((plan) => bytesToTrafficUnit(plan.traffic * plan.trafficquota) >= inputTraffic);\n if (newSelectedPlanIndex !== -1) {\n newTraffic = bytesToTrafficUnit(plans[newSelectedPlanIndex].traffic * plans[newSelectedPlanIndex].trafficquota);\n setSelectedPlanIndex(newSelectedPlanIndex);\n }\n } else if (inputTraffic < minTraffic) {\n newTraffic = minTraffic;\n setSelectedPlanIndex(0);\n } else if (inputTraffic > maxTraffic) {\n newTraffic = maxTraffic;\n setSelectedPlanIndex(plans.length - 1);\n }\n\n onSelectedPlanTrafficChange(newTraffic);\n\n return newTraffic;\n }\n\n const renderTrafficPlanBoxes = () => {\n return (\n setSelectedPlanIndex((currentSelectedPlanIndex) => trafficPlans.length > currentSelectedPlanIndex + 1 ? currentSelectedPlanIndex + 1 : currentSelectedPlanIndex)}\n onGoToPrevTrafficPlan={() => setSelectedPlanIndex((currentSelectedPlanIndex) => currentSelectedPlanIndex > 0 ? currentSelectedPlanIndex - 1 : currentSelectedPlanIndex)}\n plan={trafficPlans[selectedPlanIndex]}\n period={chosenPeriod}\n user={user}\n // We sell traffic in TB\n minTraffic={bytesToTrafficUnit(trafficPlans[0].traffic * trafficPlans[0].trafficquota)}\n maxTraffic={bytesToTrafficUnit(trafficPlans[trafficPlans.length - 1].traffic * trafficPlans[trafficPlans.length - 1].trafficquota)}\n currency={currency}\n underPricesPeriodText={underPricesPeriodText}\n buttonAction={buttonAction}\n trafficUnit={trafficUnit}\n trafficPlanBoxWidth={trafficPlanBoxWidth}\n hideInfoBoxOnDesktop={hideInfoBoxOnDesktop}\n hideInfoBoxOnMobile={hideInfoBoxOnMobile}\n showTrafficInfoBox={showTrafficInfoBox}\n onCloseTrafficInfoBox={onCloseTrafficInfoBox}\n />\n );\n };\n\n return trafficPlans.length > 0 ? renderTrafficPlanBoxes() : null;\n};\n\nexport default TrafficPlanBoxes;","//@flow\n\nimport React, { useState, useEffect, useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\n\nimport { __ } from \"../lib/utils\";\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { ColorType } from \"../lib/types/dataTypes.components\";\n\ntype TabType = {\n tabId: string | number,\n tabValue: Array,\n tabTitle: string,\n tabCustomColor: ColorType,\n clickAction: (tabId: string | number) => void,\n newLabel?: boolean\n};\n\ntype ToggleTabsProps = {\n color: ColorType,\n tabs: Array,\n activeTab: string | number,\n theme?: \"light\" | \"dark\",\n title?: string,\n width?: string,\n defaultClickAction: (tabId: string | number) => void,\n showBestValued: boolean\n};\n\nconst CONTWIDTHX2 = 300;\nconst CONTWIDTHX3 = 380;\n\nconst ToggleTabs = ({\n tabs,\n theme,\n activeTab = 0,\n color=\"cyan\",\n title,\n disabled,\n width,\n defaultClickAction,\n showBestValued = true,\n}: ToggleTabsProps) => {\n const [chosenTabId, setChosenTabId] = useState(activeTab);\n const tabsContainerWidth = width ? width : (tabs.length === 3 ? CONTWIDTHX3 : CONTWIDTHX2);\n\n const { tabWidth, offsets } = useMemo(() => {\n const tabWidth = (100 / tabs.length)\n const offsets = tabs.reduce((offsetsOut, tab, index) => {\n offsetsOut[tab.tabId] = tabWidth * index;\n return offsetsOut;\n }, {});\n return {tabWidth, offsets};\n }, [tabs]);\n\n useEffect(() => {\n setChosenTabId(activeTab);\n }, [tabs, activeTab])\n\n const handleOnClick = (clickedTabId, event, tabClickAction) => {\n if (disabled) {\n return;\n }\n\n if (clickedTabId === chosenTabId) {\n return;\n }\n\n if (defaultClickAction) {\n defaultClickAction(clickedTabId, event);\n } else if (tabClickAction) {\n tabClickAction(clickedTabId, event);\n }\n\n setChosenTabId(clickedTabId);\n }\n\n const renderTabs = () => {\n return tabs.map(({tabTitle, tabId, clickAction, tabCustomColor, newLabel}, index) => {\n return (\n \n handleOnClick(tabId, event, clickAction)}\n color={tabCustomColor || color}\n width={tabWidth}\n className={\"toggle-tab \" + (tabId === activeTab ? \"active\" : \"\" )}\n disabled={disabled}\n >\n {tabTitle}\n {newLabel ? New : null}\n \n {index !== tabs.length - 1 ? : null}\n \n );\n });\n };\n\n return (\n \n {title ? {title} : null}\n \n \n {renderTabs()}\n {(tabs.indexOf(\"lifetime\") !== -1 && showBestValued) ? (\n \n \n {__(\"best_valued\")}\n \n ) : null}\n \n \n );\n};\n\nexport default ToggleTabs;\n\nconst TabsTitle = styled.div`\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 22px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 0.71;\n letter-spacing: normal;\n text-align: center;\n color: #ffffff;\n margin-bottom: 18px;\n`;\n\nconst TabsWrapper = styled.div`\n margin: 0px auto 20px auto;\n position: relative;\n display: flex;\n justify-content: space-around;\n align-items: center;\n width: ${props => props.width}px;\n height: 38px;\n border-radius: 19px;\n background-color: rgba(0, 0, 0, 0.1);\n position: relative;\n\n @media (max-width: 768px) {\n width: 90%;\n }\n`;\n\nconst Tab = styled.div`\n position: relative;\n width: ${props => props.width}%;\n text-align: center;\n /* font-family: \"Roboto\", sans-serif; */\n font-size: 14px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: 38px;\n letter-spacing: -0.35px;\n color: ${props => (props.active ? COLORS[props.color].mainColor : \"#333333\")};\n text-transform: uppercase;\n z-index: 2;\n transition: all 0.25s ease-in-out;\n cursor: pointer !important;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n color: ${props => COLORS[props.color].mainColor};\n }\n`;\n\nconst Separator = styled.div`\n position: relative;\n display: inline-block;\n width: 1px;\n height: 16px;\n background-color: #cccccc;\n`;\n\nconst SelectedBar = styled.div`\n width: calc(${props => props.width}% - 4px);\n height: 34px;\n border-radius: 17px;\n position: absolute;\n top: 2px;\n left: calc(${props => props.leftOffset}% + 2px);\n background-color: #ffffff;\n z-index: 1;\n transition: all 0.25s ease-in-out;\n box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.07);\n`;\n\nconst BestValue = styled.div`\n position: absolute;\n top: -32px;\n left: 100%;\n\n @media (max-width: 768px) {\n display: none;\n }\n`;\n\nconst BestValueArrow = styled.div`\n position: absolute;\n right: -30px;\n top: 3px;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n width: 78px;\n height: 26px;\n`;\n\nconst BestValueText = styled.div`\n font-family: \"Marck Script\";\n font-size: 19px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1;\n letter-spacing: 0.38px;\n text-align: left;\n color: #000000;\n position: absolute;\n width: 92px;\n top: 37px;\n left: 12px;\n transition: all 0.3s ease-in-out;\n\n @media (min-width: 1350px) {\n width: 200px;\n top: 44px;\n }\n`;\n\nconst New = styled.span`\n display: inline-block;\n font-size: 11px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: 0.8;\n letter-spacing: normal;\n text-align: center;\n color: #fff;\n padding: 4px;\n border-radius: 3px;\n background-color: ${props => COLORS[props.color].mainColor};\n margin-left: 6px;\n`;\n","//@flow\n\nimport React, { useEffect, useLayoutEffect, useState, useRef, useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { getPromoParam, sendAnalyticsEvent, sendPassAnalyticsEvent } from \"@pcloud/web-utilities/dist/lib/ptr\";\nimport { rcookie, hrefSearch, detectIsMobile } from \"@pcloud/web-utilities/dist/lib/utils\";\nimport {\n plansBoxesColors,\n underPriceTexts,\n planNames,\n URLPlanNames,\n gaPeriods,\n plansQuota,\n PASS_PLANS_PER_PERIOD,\n productInfo, \n oldUnsupportedURLPlanNames, \n mapOldAddStoragePlanIds\n} from \"@pcloud/web-utilities/dist/plans/plansInfo\";\nimport { PASS_PREMIUM_PLAN_ID, PASS_FAMILY_PLAN_ID } from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport { signToCurrency } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\nimport { renderQuota } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\nimport {\n PeriodType,\n Userinfo,\n ColorType,\n CurrencyType\n} from \"../../../lib/types/dataTypes.components\";\nimport SwitchAnimation from \"@pcloud/web-utilities/dist/resources/components/Animation/SwitchAnimation\";\n\nimport { PlanType } from \"../../../lib/types/PlanType\";\nimport BoxPeriod from \"../../PlansBox/BoxPeriod\";\nimport PlanBox from \"./PlanBox\";\nimport SpinContainer from \"../../SpinContainer\";\nimport LoadingIcon from \"../../../svg/loading-icon.svg\";\nimport { FadeTranstionContainer } from \"./Style\";\nimport * as Style from \"../styles/Plans\";\nimport PlansTypeComponent from \"../styles/PlansTypeComponent\";\nimport { __ } from \"../../../lib/utils\";\nimport TrafficPlanBoxes from \"./TrafficPlanBoxes\";\nimport TrafficPlanInfoBox from \"./TrafficPlanInfoBox\";\nimport ToggleTabs from \"../../ToggleTabs\";\nimport CheckIcon from \"../../../svg/check-icon.svg\";\n\ntype Props = {\n loadingPlans: boolean,\n currency: CurrencyType,\n user: Userinfo | null,\n plans: {[period: PeriodType]: [PlanType]},\n hiddenPeriods: [PeriodType],\n chosenPeriod: PeriodType,\n hideDescription: boolean,\n setChosenPeriod: (chosenPeriod: PeriodType) => void,\n showComparePrices: boolean,\n showBestPriceByRandomGirl: boolean,\n checkoutPageLink: string,\n downgrade: boolean,\n periodDisclaimer?: string,\n buttonColor?: string,\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n plansVersion: string,\n showPlanDescriptionText: boolean,\n showTextUnderPrices: boolean,\n maxNumberOfFeaturesToShow: number, // -1 -> no limit\n periodsMainColor: ColorType,\n periodsBackgroundColor: string,\n defaultPeriod: PeriodType,\n analytics: {\n category: string,\n label: string,\n pageTitle: string\n },\n switchPlansFromSamePeriodByTabs: boolean,\n onTabSwitch: (plans: [PlanType], period: PeriodType, currency: CurrencyType) => void,\n tabsTitle: string,\n trafficUnit: 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB' | 'ZB' | 'YB',\n trafficPlanBoxWidth: number,\n subtitlePosition: \"top\" | \"bottom\",\n showSaveLabel: boolean,\n}\n\nconst Plans = ({\n loadingPlans,\n currency,\n plans,\n hiddenPeriods,\n chosenPeriod,\n hideDescription,\n discount,\n setChosenPeriod,\n showComparePrices,\n showBestPriceByRandomGirl,\n hideDiscountPercentage,\n checkoutPageLink,\n downgrade,\n periodDisclaimer = \"\",\n buttonColor,\n plansType,\n plansVersion = null,\n user,\n showPlanDescriptionText = false,\n showTextUnderPrices = true,\n maxNumberOfFeaturesToShow = 2,\n periodsMainColor = \"cyan\",\n periodsBackgroundColor = \"#ebebeb\",\n defaultPeriod = \"lifetime\",\n analytics = null,\n switchPlansFromSamePeriodByTabs = false,\n onTabSwitch = null,\n tabsTitle = null,\n trafficUnit = \"TB\",\n trafficPlanBoxWidth = \"442px\",\n layout = \"default\",\n subtitlePosition,\n showSaveLabel,\n}: Props) => {\n const isRetina = window.devicePixelRatio > 1;\n\n // Used by family plan.\n const preselectedPlanId = useMemo(() => {\n const preselectedProductName = switchPlansFromSamePeriodByTabs && (hrefSearch(\"preselectedOption\") || hrefSearch(\"preselected-option\"));\n return preselectedProductName && productInfo[preselectedProductName] && productInfo[preselectedProductName].plan_id && !oldUnsupportedURLPlanNames[preselectedProductName] ? (mapOldAddStoragePlanIds[productInfo[preselectedProductName].plan_id] || productInfo[preselectedProductName].plan_id) : null;\n }, []);\n\n // Family plan type specific.\n const [chosenPlanIndex, setChosenPlanIndex] = useState(null);\n\n const [periods, setPeriods] = useState(null);\n\n // Traffic plans type specific states...\n const [selectedPlanTraffic, setSelectedPlanTraffic] = useState(null);\n const [showTrafficInfoBox, setShowTrafficInfoBox] = useState(true);\n\n const plansContainerHeightObserver = useRef(null);\n\n useEffect(() => {\n return () => {\n if (plansContainerHeightObserver.current) {\n plansContainerHeightObserver.current.disconnect();\n plansContainerHeightObserver.current = null;\n }\n }\n }, []);\n\n // Used by Family plans only.\n useLayoutEffect(() => {\n if (!switchPlansFromSamePeriodByTabs || !plans || !chosenPeriod) {\n return;\n }\n\n let newChosenPlanIndex = chosenPlanIndex !== null ? chosenPlanIndex : 0;\n plans[chosenPeriod].forEach((plan, index) => {\n if (preselectedPlanId && preselectedPlanId === plan.productid) {\n newChosenPlanIndex = index;\n }\n });\n\n setChosenPlanIndex(newChosenPlanIndex);\n \n if (onTabSwitch) {\n onTabSwitch([plans[chosenPeriod][newChosenPlanIndex]], chosenPeriod, currency);\n }\n\n },[plans, chosenPeriod]);\n\n const sortPeriods = (periods) => {\n const periodsCopy = [...periods];\n const sortedPeriodsOut = [];\n [\"month\", \"year\", \"lifetime\"].forEach(nextValue => {\n const foundMonthIndex = periodsCopy.indexOf(nextValue);\n if (foundMonthIndex !== -1) {\n periodsCopy.splice(foundMonthIndex, 1);\n sortedPeriodsOut.push(nextValue);\n }\n });\n // Concat remaining periods.\n return sortedPeriodsOut.concat(periodsCopy);\n };\n\n // Handle with periods.\n useEffect(() => {\n const periodsOut = [];\n const periodsWithAddStoragePlan = [];\n\n if (plans) {\n for (const period in plans) { \n if (hiddenPeriods.indexOf(period) !== -1) {\n continue;\n }\n\n // Check if we have add storage plan for showing.\n if (plans[period].some(plan => plan.addplan)) {\n periodsWithAddStoragePlan.push(period);\n }\n\n periodsOut.push(period);\n }\n }\n\n if (periodsWithAddStoragePlan.length > 0) {\n setPeriods(periodsWithAddStoragePlan.length > 1 ? sortPeriods(periodsWithAddStoragePlan) : []);\n } else {\n // Check sort order because returned from API could differ. For example for traffic \"year\" is returned before \"month\"\n setPeriods(sortPeriods(periodsOut));\n }\n }, [plans, hiddenPeriods]);\n\n // Handle with chosenPeriod.\n useEffect(() => {\n if (!periods) {\n return;\n }\n \n // Check if this is initial set of chosen period\n if (chosenPeriod === null) {\n const URL_Period = hrefSearch(\"period\");\n\n if (periods.indexOf(URL_Period) !== -1) {\n setChosenPeriod(URL_Period);\n\n if (onTabSwitch) {\n onTabSwitch(plans[URL_Period], URL_Period, currency);\n }\n\n return;\n }\n }\n\n // Set to default if we have such param.\n if (chosenPeriod === null && defaultPeriod && periods.indexOf(defaultPeriod) !== -1) {\n setChosenPeriod(defaultPeriod);\n\n if (onTabSwitch) {\n onTabSwitch(plans[defaultPeriod], defaultPeriod, currency);\n }\n\n return;\n }\n\n // Check if chosen period exists in the possible period options?\n if (chosenPeriod === null || periods.indexOf(chosenPeriod) === -1) {\n // Set chosenPeriod to be the last period in the array || \"lifetime\". For example add storage plans are possible only there.\n const newPeriod = periods.length > 0 ? periods[periods.length - 1] : \"lifetime\";\n setChosenPeriod(newPeriod);\n\n if (onTabSwitch) {\n onTabSwitch(plans[newPeriod], newPeriod, currency);\n }\n }\n }, [periods]);\n\n useEffect(() => {\n if (!chosenPeriod) {\n return;\n }\n\n if (typeof dataLayer !== \"undefined\") {\n plans[chosenPeriod].forEach(({productid, pricecents, trafficquota, traffic, validdiscountcode}) => {\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_item\",\n ecommerce: {\n currency: signToCurrency[currency],\n value: pricecents / 100,\n items: [{\n item_id: productid,\n item_name: planNames[productid] + \" \" + gaPeriods[chosenPeriod],\n affiliation: rcookie(\"ref\"),\n coupon: discount && validdiscountcode ? discount : \"\",\n index: 0,\n item_brand: PASS_PLANS_PER_PERIOD[chosenPeriod].includes(productid) ? \"pCloudPass\" : \"pCloud\",\n item_category: gaPeriods[chosenPeriod],\n item_list_id: `${plansType}_products`,\n item_variant: getPlanQuota({ productid, trafficquota, traffic }),\n price: pricecents / 100,\n quantity: 1\n }],\n }\n });\n })\n }\n }, [plans, chosenPeriod]);\n \n useLayoutEffect(() => {\n if (!chosenPeriod) {\n return;\n }\n \n // Fix for aligning plan action buttons in the same row, when we have different height of plan-box-header.\n if (typeof $ !== 'undefined') {\n let maxPlanBoxHeaderHeight = 0;\n $('.plan-box-header').each(function () {\n maxPlanBoxHeaderHeight = ($(this).height() > maxPlanBoxHeaderHeight) ? $(this).height() : maxPlanBoxHeaderHeight;\n });\n\n if (maxPlanBoxHeaderHeight > 0) {\n $('.plan-box-header').css('min-height', maxPlanBoxHeaderHeight);\n }\n }\n }, [chosenPeriod]);\n\n const getPlanQuota = ({ productid, trafficquota, traffic }) => {\n if (plansType === \"traffic\" && trafficquota && traffic) {\n const trafficAmmount = (trafficquota / 1024 / 1024 / 1024 / 1024) * traffic;\n return `traffic ${trafficAmmount} tb`\n };\n\n return plansQuota[productid] || \"\";\n };\n\n const onPeriodChange = (period: PeriodType) => {\n if (plansType === \"passwords\") {\n sendPassAnalyticsEvent({ label: analytics.pageTitle, category: `Plan - ${period}`, action: 'Click' });\n }\n \n setChosenPeriod(period);\n\n if (onTabSwitch) {\n onTabSwitch(plans[period], period, currency);\n }\n }\n\n const getCheckoutUrlParams = (plan: PlanType, period: PeriodType) => {\n const params = [\n \"period=\" + period,\n \"product=\" + URLPlanNames[plan.productid]\n ];\n\n if (plansType === \"traffic\" && plan.traffic) {\n params.push(\"traffic=\" + plan.traffic);\n }\n\n if (discount && discount !== \"null\") {\n params.push(\"discount=\" + discount);\n }\n\n if (downgrade) {\n params.push(\"downgrade=1\");\n }\n\n return params;\n }\n\n const handleChooseFreePlan = () => {\n if (plansType === \"passwords\") {\n // Start for free\n sendPassAnalyticsEvent({ label: analytics.pageTitle, category: `Get - Free`, action: 'Click' });\n \n if (!user) {\n if (detectIsMobile() && typeof openPassLoginModal === \"function\") {\n openPassLoginModal(false, \"register\");\n } else {\n location.href = \"https://pass.pcloud.com/#/register\";\n }\n } else {\n location.href = \"https://pass.pcloud.com/\";\n }\n }\n }\n\n const handleChoosePlan = (plan: PlanType, period: PeriodType) => {\n if (plan.productid === 0) {\n return handleChooseFreePlan();\n }\n\n if (plansType === \"crypto\") {\n const analyticsParams = {\n category: analytics.category + \" - buy button\",\n action: \"click\",\n label: getPromoParam(\"label\") || analytics.label,\n };\n\n const analyticsData = {\n revenue: plan.pricecents / 100,\n currency: signToCurrency[currency],\n period: period,\n products: plan.productid\n };\n \n if (user && user.auth) {\n analyticsParams.auth = user.auth;\n };\n \n const passcampaign = getPromoParam(\"passcampaign\");\n if (passcampaign) {\n analyticsData.passcampaign = passcampaign;\n };\n\n if (discount && plan.validdiscountcode) {\n analyticsData.discountcode = discount;\n }\n\n sendAnalyticsEvent(analyticsParams, analyticsData);\n }\n\n const items = [{\n item_id: plan.productid,\n item_name: planNames[plan.productid] + \" \" + gaPeriods[period],\n item_brand: plansType === \"passwords\" ? \"pCloudPass\" : \"pCloud\",\n item_category: gaPeriods[period],\n item_variant: getPlanQuota({ productid: plan.productid, trafficquota: plan.trafficquota, traffic: plan.traffic }),\n affiliation: rcookie(\"ref\"),\n price: plan.pricecents / 100,\n currency: signToCurrency[currency],\n quantity: 1\n }];\n\n if (typeof dataLayer !== \"undefined\") {\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"select_item\",\n ecommerce: {\n item_list_id: `${plansType}_products`,\n items: items\n }\n });\n \n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"add_to_cart\",\n ecommerce: {\n currency: signToCurrency[currency],\n value: plan.pricecents / 100,\n items: items\n }\n });\n }\n\n if (plansType === \"passwords\") {\n sendPassAnalyticsEvent({ label: analytics.pageTitle, category: `Get - ${period} - ${planNames[plan.productid]}`, action: 'Click' });\n }\n \n const checkoutPageParams = getCheckoutUrlParams(plan, period);\n\n // Redirect to Checkout page.\n location.href = checkoutPageLink + (checkoutPageLink.search(/[?]/) === -1 ? \"?\" : \"&\") + checkoutPageParams.join('&');\n };\n\n const renderPlanBoxes = () => {\n switch (plansType) {\n case \"traffic\":\n return (\n setShowTrafficInfoBox(false)}\n />\n );\n\n case \"storage_family\": \n return getPlanBox(plans[chosenPeriod][chosenPlanIndex], chosenPlanIndex);\n\n default: \n return plans[chosenPeriod].map(getPlanBox);\n }\n };\n\n const getPlanBox = (plan, index) => {\n const {productid, pricecents, originalpricecents, addplan, canbuy, quotaafterbuy, trafficafterbuy, canbuydisabledreason = \"plan_upgrade_restrictions\"} = plan;\n const currentPrice = pricecents / 100;\n const oldPrice = pricecents != originalpricecents ? originalpricecents / 100 : 0;\n let periodText = underPriceTexts[chosenPeriod];\n\n const discountInfo = (oldPrice && oldPrice > currentPrice) ? {\n value: Math.round((1 - currentPrice / oldPrice) * 100),\n type: \"percent\"\n } : {};\n\n if (chosenPeriod === \"month\" && plansType === \"storage\") {\n const monthlyPriceForYear = currentPrice * 12;\n periodText = `${monthlyPriceForYear % 1 !== 0 ? monthlyPriceForYear.toFixed(2) : monthlyPriceForYear} ${signToCurrency[currency]} ${__(\"for_year\")}`;\n }\n\n return (\n handleChoosePlan(plan, period)}\n oldPrice={oldPrice}\n discount={discountInfo}\n disabled={!canbuy}\n disabledReason={!canbuy ? canbuydisabledreason : null}\n periodText={showTextUnderPrices ? periodText : null}\n borderRadius={plansType === \"storage\" && plansVersion !== \"0.0.0\" ? 24 : 19}\n hideDescription={hideDescription}\n getTotalStorage={() => renderQuota(quotaafterbuy)}\n getTotalTraffic={() => renderQuota(trafficafterbuy)}\n showBestPriceByRandomGirl={showBestPriceByRandomGirl && plans[chosenPeriod].length === index + 1}\n hideDiscountPercentage={hideDiscountPercentage}\n showPlanDescriptionText={showPlanDescriptionText}\n maxNumberOfFeaturesToShow={maxNumberOfFeaturesToShow}\n subtitlePosition={subtitlePosition}\n showSaveLabel={showSaveLabel}\n />\n );\n };\n\n const onChangePlanByTab = (tabId) => {\n setChosenPlanIndex(tabId);\n \n if (onTabSwitch) {\n onTabSwitch([plans[chosenPeriod][tabId]], chosenPeriod, currency);\n }\n };\n\n const renderPlansAsTabs = () => {\n if (!plans[chosenPeriod] || plans[chosenPeriod].length === 0) {\n return null;\n }\n\n const tabs = plans[chosenPeriod].map((plan, index) => {\n return {\n tabId: index,\n tabTitle: (plan.addplan ? \"+ \" : \"\") + plansQuota[plan.productid],\n };\n });\n\n return (tabs.length === 0 ? null : \n \n );\n };\n\n const renderComparePricesArrows = () => {\n return (\n \n \n {__(\"landing_lifetime_compare\")}\n \n \n );\n };\n\n return (!chosenPeriod || (switchPlansFromSamePeriodByTabs && chosenPlanIndex === null) ? null :\n \n {(periods && periods.length > 1) ? (\n \n {showComparePrices && renderComparePricesArrows()}\n \n \n {periodDisclaimer ? \n {periodDisclaimer} \n : null}\n\n {(layout === \"accelerated\" && !periodDisclaimer) ? (\n \n \n {__(\"acc_plans_rec\", \"The price remains the same until you cancel\")}\n \n ) : null}\n \n ) : null }\n {switchPlansFromSamePeriodByTabs ? renderPlansAsTabs() : null}\n \n {plansType === \"traffic\" ? \n setShowTrafficInfoBox(false)}\n />\n : null}\n \n {}}\n onExited={() => {}}\n appear\n >\n \n \n \n \n \n \n {__(\"Loading...\")}\n \n \n \n \n \n \n {renderPlanBoxes()}\n \n \n \n \n )\n};\n\nexport default Plans;\n\nconst AcceleratedRecText = styled(Style.PeriodsDisclaimer)`\n font-weight: 400;\n font-size: 20px;\n color: #000;\n line-height: 20px;\n margin-top: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n @media (max-width: 768px) {\n font-size: 14px;\n\n & svg {\n width: 14px;\n height: 14px;\n }\n }\n`;","import React from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\nimport { __ } from \"../../../lib/utils\";\n\nconst MoreOptions = ({\n options = [\"family\", \"business\", \"traffic\"],\n showTitle\n}) => {\n const optionValues = {\n family: {\n icon: ,\n title: __(\"family_pricing_headline\"),\n description: __(\"family_pricing_description\"),\n linkHref: \"/family\",\n linkText: __(\"LEARN_MORE\"),\n linkTestId: \"learn_more_family\"\n },\n business: {\n icon: ,\n title: __(\"pCloud Business\"),\n description: __(\"business_pricing_description\"),\n linkHref: \"/business\",\n linkText: __(\"LEARN_MORE\"),\n linkTestId: \"learn_more_business\"\n },\n traffic: {\n icon: ,\n title: __(\"pricing_traffic_option_title\"),\n description: __(\"pricing_traffic_option_description\"),\n linkHref: \"/additional-traffic\",\n linkText: __(\"pricing_traffic_option_cta\"),\n linkTestId: \"buy_now_traffic\"\n }\n }\n return (\n \n { showTitle ? {__(\"looking_for_more\")} : null }\n \n {\n options.map((option) => {\n const optionData = optionValues[option];\n const { icon, title, description, linkHref, linkText, linkTestId } = optionData;\n\n return (\n \n { icon }\n \n
\n {title}\n {description}\n
\n \n {linkText}\n \n \n
\n
\n )\n })\n }\n
\n
\n );\n};\n\nexport default MoreOptions;\n\nconst MoreOptionsWrapper = styled.div`\n width: 100%;\n max-width: 1220px;\n padding: 0px 20px;\n box-sizing: border-box;\n margin: 25px auto;\n`;\n\nconst MoreOptionsTitle = styled.h2`\n text-align: center;\n font-weight: bold;\n font-size: 28px;\n margin-bottom: 22px;\n letter-spacing: normal;\n\n @media (max-width: 768px) {\n font-size: 24px;\n letter-spacing: -0.6px;\n }\n`;\n\nconst MoreOptionsBoxContainer = styled.div`\n display: flex;\n width: 100%;\n justify-content: center;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nconst MoreOptionsBox = styled.div`\n width: 33.33%;\n box-sizing: border-box;\n padding: 36px;\n margin: 0px 13px;\n box-shadow: 4px 4px 4px 0 rgb(96 96 96 / 2%);\n background-color: #ffffff;\n border-radius: 17px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-direction: column;\n\n &:first-of-type {\n margin-left: 0px;\n }\n\n &:last-of-type {\n margin-right: 0px;\n }\n\n @media (max-width: 768px) {\n border-radius: 0px;\n margin: 8px auto;\n width: 100%;\n flex-direction: row;\n\n &:first-of-type {\n margin-top: 0px;\n }\n\n &:last-of-type {\n margin-bottom: 0px;\n }\n }\n`;\n\nconst IconGeneric = styled.div`\n display: inline-block;\n width: 64px;\n height: 64px;\n margin-bottom: 22px;\n background-repeat: no-repeat;\n background-size: 64px 64px;\n background-position: center;\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n margin-bottom: 0px;\n }\n`;\n\nconst FamilyIcon = styled(IconGeneric)`\n background-image: url(\"/images/plans/family.png\");\n ${hiDPI(1.5)} {\n background-image: url(\"/images/plans/family@2x.png\");\n }\n`;\n\nconst BusinessIcon = styled(IconGeneric)`\n background-image: url(\"/images/plans/business.png\");\n ${hiDPI(1.5)} {\n background-image: url(\"/images/plans/business@2x.png\");\n }\n`;\n\nconst TrafficIcon = styled(IconGeneric)`\n background-image: url(\"/images/plans/traffic.png\");\n ${hiDPI(1.5)} {\n background-image: url(\"/images/plans/traffic@2x.png\");\n }\n`;\n\nconst TextWrap = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n flex-grow: 1;\n\n @media (max-width: 768px) {\n width: 100%;\n margin-left: 20px;\n align-items: flex-start;\n }\n`;\n\nconst MoreOptionTitle = styled.h3`\n font-size: 19px;\n font-weight: 500;\n line-height: 1.21;\n letter-spacing: -0.3px;\n text-align: center;\n color: #222;\n margin-bottom: 8px;\n padding: 0px;\n\n @media (max-width: 768px) {\n text-align: left;\n }\n`;\n\nconst MoreOptionDescription = styled.p`\n font-size: 15px;\n line-height: 1.2;\n letter-spacing: -0.2px;\n text-align: center;\n color: #222;\n font-weight: 400;\n padding: 0px;\n margin-bottom: 18px;\n\n @media (max-width: 768px) {\n text-align: left;\n margin-bottom: 0px;\n width: auto;\n }\n`;\n\nconst Link = styled.a`\n color: #17bed0;\n text-decoration: none;\n display: inline-block;\n cursor: pointer;\n font-size: 15px;\n text-align: center;\n margin-top: 8px;\n`;\n\nconst LinkArrow = styled.div`\n display: inline-block;\n width: 6px;\n height: 10px;\n margin-left: 4px;\n background-repeat: no-repeat;\n background-size: 6px 10px;\n background-position: center;\n background-image: url(\"/images/plans/more.png\");\n ${hiDPI(1.5)} {\n background-image: url(\"/images/plans/more@2x.png\");\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport reactStringReplace from \"react-string-replace\";\nimport PlansTypeComponent from \"../styles/PlansTypeComponent\";\n\nconst ExplorePcloud = ({ user, openRegisterModal, switchToMonthlyPlans, plansType }) => {\n let tryFreeAndMonthlyText = \"\";\n const userCancelledSubscription =\n user && user.lastsubscription && user.lastsubscription.status === \"canceled\";\n const userHasMonthlySubscription = user && user.lastsubscription && user.lastsubscription.period === \"month\" && !user.premiumlifetime;\n const userHasPlan =\n user &&\n (user.plan || user.cryptolifetime || user.cryptosubscription || user.efh || user.business || pCloud.user.additionaltraffic);\n\n if (!user) {\n tryFreeAndMonthlyText = __(\"want_to_explore_try_monthly_or_free\");\n tryFreeAndMonthlyText = reactStringReplace(\n tryFreeAndMonthlyText,\n /(%monthly_plans%)/g,\n (match, i) => (\n {__(\"monthly_plans\")}\n )\n );\n\n tryFreeAndMonthlyText = reactStringReplace(\n tryFreeAndMonthlyText,\n /(%try_for_free%)/g,\n (match, i) => (\n {\n openRegisterModal();\n }}\n data-testid=\"show_register\"\n >\n {__(\"TRY_FOR_FREE\")}\n \n )\n );\n } else if (\n !userHasPlan ||\n userHasMonthlySubscription ||\n (userCancelledSubscription && !user.cryptolifetime && !user.premiumlifetime)\n ) {\n tryFreeAndMonthlyText = reactStringReplace(\n __(\"want_more_features_try_monthly\"),\n /(%monthly_plans%)/g,\n (match, i) => (\n {__(\"monthly_plans\")}\n )\n );\n } else {\n return null;\n }\n\n return {tryFreeAndMonthlyText};\n};\n\nexport default ExplorePcloud;\n\nconst UnderlineLink = styled.div`\n margin-left: 0px;\n text-decoration: underline;\n color: #17bed0;\n text-decoration: none;\n display: inline-block;\n cursor: pointer;\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport reactStringReplace from \"react-string-replace\";\nimport { renderQuota } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\n\nimport { productNameMap } from \"@pcloud/web-utilities/dist/plans/plansInfo\";\nimport {\n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n CUSTOM_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY_CUSTOM_PLAN_ID\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport PlansTypeComponent from \"../styles/PlansTypeComponent\";\n\nconst UserPlanInfo = ({ user }) => {\n if (\n user &&\n user.premiumlifetime &&\n (user.plan == PREMIUM_PLAN_ID ||\n user.plan == PREMIUM_PLUS_PLAN_ID ||\n user.plan == CUSTOM_PLAN_ID ||\n user.plan == FAMILY2TB_PLAN_ID || \n user.plan == FAMILY_CUSTOM_PLAN_ID)\n ) {\n const planName = productNameMap[user.plan].long;\n const userStorage = renderQuota(user.quota);\n const userTraffic = renderQuota(user.publiclinkquota);\n\n let infoText = reactStringReplace(\n __(\"your_current_plan_storage_traffic\"),\n /(%plan%)/g,\n (match, i) => {planName}\n );\n\n infoText = reactStringReplace(infoText, /(%storage%)/g, (match, i) => (\n {userStorage}\n ));\n\n infoText = reactStringReplace(infoText, /(%traffic%)/g, (match, i) => (\n {userTraffic}\n ));\n\n return (\n \n
\n {infoText.map(element => {\n return element;\n })}\n
\n
\n );\n }\n\n return null;\n};\n\nexport default UserPlanInfo;\n\nconst Bold = styled.span`\n font-weight: bold;\n`;\n","//@flow\n\nimport React, { useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\n\nimport Modal, { OvalModalClose } from \"@pcloud/web-utilities/dist/resources/components/Modal\";\nimport { onMouseOut, __ } from \"../../../lib/utils\";\nimport { setcookie, rcookie } from \"@pcloud/web-utilities/dist/lib/utils\";\n\ntype Props = {\n handleButtonClick: () => void\n};\n\nconst TimerDiscountModal = ({ handleButtonClick = () => {} }: Props) => {\n const [showModal, setShowModal] = useState(false);\n (showModal: boolean);\n\n const modalCustomStyle = {\n \"display\": \"flex\",\n \"alignItems\": \"center\",\n // \"justifyContent\": \"center\"\n };\n\n useEffect(() => {\n const timer = setTimeout(setMouseOutEvent, 5000);\n return () => {\n clearTimeout(timer)\n document.onmouseout = () => {};\n };\n }, []); //[]\n\n useEffect(() => {\n const timer = $(\".exit-intent-timer-container\").FlipClock(60, {\n autoStart: false,\n countdown: true,\n clockFace: \"MinuteCounter\",\n language: pCloud.lang\n });\n timer.start();\n var timeout = setTimeout(function() {\n closeModal();\n }, 62000);\n }, [showModal]); //[showModal]\n\n const handleMouseOut = event => {\n const refIsOK = true;\n //!rcookie(\"ref\") || rcookie(\"ref\") == 50 || rcookie(\"ref\") == 501 || hrefSearch(\"refcode\");\n\n onMouseOut(event, () => {\n if (refIsOK && !showModal && !rcookie(\"openedExitIntentTimerModal\")) {\n setShowModal(true);\n document.getElementsByTagName(\"BODY\")[0].classList.add(\"overlayed\");\n setcookie(\"openedExitIntentTimerModal\", true, 1);\n }\n });\n };\n\n const setMouseOutEvent = () => {\n document.onmouseout = handleMouseOut;\n };\n\n const closeModal = () => {\n setShowModal(false);\n document.getElementsByTagName(\"BODY\")[0].classList.remove(\"overlayed\");\n };\n\n const handleClick = () => {\n closeModal();\n handleButtonClick();\n };\n\n return (\n \n \n {__(\"checkout_exit_headline\").replace(\"%percent%\", \"10%\")}\n {__(\"checkout_exit_text\")}\n \n \n {__(\"checkout_exit_CTA\").replace(\"%percent%\", \"10%\")}\n \n {__(\"checkout_exit_sub_CTA\")}\n \n \n \n );\n};\n\nexport default TimerDiscountModal;\n\nconst ModalWrap = styled.div`\n width: 100%;\n min-width: 780px;\n box-sizing: border-box;\n text-align: center;\n background-clip: padding-box;\n box-shadow: 0 8px 30px rgb(0 0 0 / 20%);\n margin: 0 auto;\n padding: 20px;\n background-color: #fff;\n`;\n\nconst ModalTitle = styled.div`\n font-size: 30px;\n font-weight: 500;\n letter-spacing: -0.7px;\n margin: 40px 0 0 0;\n`;\n\nconst ModalDescription = styled.div`\n font-size: 20px;\n margin: 8px 0 0 0;\n letter-spacing: -0.5px;\n`;\n\nconst ModalButton = styled.div`\n display: table;\n font-size: 15px;\n font-weight: 500;\n min-width: 380px;\n margin: 42px auto;\n padding: 14px 20px 13px 20px;\n text-transform: uppercase;\n background: #86c600;\n color: #fff;\n border-radius: 7px;\n cursor: pointer;\n box-shadow: 0 1px 1px rgb(0 0 0 / 7%);\n width: auto;\n`;\n\nconst ModalNoThanks = styled.div`\n text-decoration: underline;\n cursor: pointer;\n color: #888;\n font-size: 16px;\n margin: 35px 0 50px;\n letter-spacing: -0.5px;\n`;\n\nconst TimerContainer = styled.div`\n text-align: center;\n margin: 50px auto 0px auto;\n width: auto;\n display: inline-block;\n`;\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgModalCloseCircle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 28,\n height: 28,\n fill: \"none\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 0C6.2 0 0 6.2 0 14s6.2 14 14 14 14-6.2 14-14S21.8 0 14 0zm5.4 21L14 15.6 8.6 21 7 19.4l5.4-5.4L7 8.6 8.6 7l5.4 5.4L19.4 7 21 8.6 15.6 14l5.4 5.4-1.6 1.6z\",\n fill: \"#000\",\n fillOpacity: 0.35\n })));\n}\nexport default SvgModalCloseCircle;","//@flow\n\nimport React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\n\nimport Modal from \"@pcloud/web-utilities/dist/resources/components/Modal\";\nimport ModalCloseCircleSvg from \"../../../../new_site/images/plans/modal-close-circle.svg\"\n\nconst ImagePreviewModalSimple = ({ handleModalClose, imgSrc }) => {\n useEffect(() => {\n return () => {\n document.onmouseout = () => { };\n };\n }, []);\n\n const closeModal = () => {\n handleModalClose();\n };\n\n return (\n \n \n \"pCloud\"\n \n \n \n );\n};\n\nexport default ImagePreviewModalSimple;\n\nconst ModalWrap = styled.div`\n max-width: 960px;\n max-height: 662px;\n overflow: hidden;\n border-radius: 16px;\n\n img {\n width: 100%;\n }\n`;\n\nconst StyledModalCloseCircleSvg = styled(ModalCloseCircleSvg)`\n position: absolute;\n top: 16px;\n right: 16px;\n cursor: pointer;\n`\n","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCollaboration(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 34,\n height: 27.268\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"collaboration_svg__a\",\n x1: 0.037,\n y1: 0.031,\n x2: 0.968,\n y2: 0.955,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#fdcb51\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fb838b\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"folder_shared_FILL1_wght400_GRAD0_opsz48(1)\",\n d: \"M26.17 22.742a3.133 3.133 0 002.216-5.368 3.589 3.589 0 00-2.216-.852 3.133 3.133 0 00-2.216 5.368 3.407 3.407 0 002.216.852zm-6.817 7.414h13.634V29.3a2.922 2.922 0 00-1.787-2.724 10.376 10.376 0 00-5.028-.937 11.482 11.482 0 00-5.028.937 3.008 3.008 0 00-1.791 2.724zm-12.7 5.113a2.453 2.453 0 01-1.786-.769 2.453 2.453 0 01-.767-1.788V10.556a2.453 2.453 0 01.767-1.789A2.321 2.321 0 016.656 8h10.822a4.277 4.277 0 011.023.17 1.948 1.948 0 01.852.6l1.7 1.789h14.491a2.621 2.621 0 012.556 2.554v19.6a2.621 2.621 0 01-2.556 2.556z\",\n transform: \"translate(-4.1 -8)\",\n fill: \"url(#collaboration_svg__a)\"\n })));\n}\nexport default SvgCollaboration;","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgSecurity(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 26,\n height: 33.999\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"security_svg__a\",\n x1: 0.017,\n y1: 0.082,\n x2: 0.932,\n y2: 0.961,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#dae23f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#84c400\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Union 59\",\n d: \"M-7986 34a4 4 0 01-4-4V16a4 4 0 014-4h1V8a8.01 8.01 0 018-8 8.008 8.008 0 018 8v4h1a4 4 0 014 4v14a4 4 0 01-4 4zm6-11a3 3 0 003 3 3 3 0 003-3 3 3 0 00-3-3 3 3 0 00-3 3zm9-11V8a6.009 6.009 0 00-6-6 6.01 6.01 0 00-6 6v4z\",\n transform: \"translate(7990)\",\n fill: \"url(#security_svg__a)\"\n })));\n}\nexport default SvgSecurity;","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgAccess(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 34,\n height: 34\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"access_svg__a\",\n x1: 0.085,\n y1: 0.214,\n x2: 0.899,\n y2: 0.811,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#bc75ca\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8a7bef\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.1 27.7a1.417 1.417 0 001.1.1c.4-.1.6-.4.8-.8a10.261 10.261 0 00.4-1.4 7.084 7.084 0 00.1-1.4 9.058 9.058 0 00-.6-3.2 7.835 7.835 0 00-4.6-4.6 8.662 8.662 0 00-3.2-.6l.8-.8a1.273 1.273 0 10-1.8-1.8l-3.5 3.4a.764.764 0 00-.2.5c0 .2.1.3.2.5l3.5 3.4a3.552 3.552 0 00.9.4 1.273 1.273 0 00.9-2.2l-1-1a6.2 6.2 0 012.3.4 4.644 4.644 0 012 1.3 5.328 5.328 0 011.3 2 5.7 5.7 0 01.4 2.2 4.1 4.1 0 01-.1 1.1c-.1.3-.2.7-.3 1a1.412 1.412 0 00-.1.9 4.35 4.35 0 00.7.6zM23.2 35a1.212 1.212 0 001.8 0l3.5-3.4a.764.764 0 00.2-.5c0-.2-.1-.3-.2-.5L25 27.2a3.552 3.552 0 00-.9-.4 1.273 1.273 0 00-.9 2.2l.9.9a5.867 5.867 0 01-2.3-.4 5.748 5.748 0 01-3.3-3.3A5.45 5.45 0 0118 24a3.4 3.4 0 01.1-1 1.689 1.689 0 01.3-1 1.729 1.729 0 00.1-1 1.344 1.344 0 00-.6-.7 1.417 1.417 0 00-1.1-.1 1.2 1.2 0 00-.7.7 8.331 8.331 0 00-.4 1.5 7.569 7.569 0 00-.1 1.5 9.058 9.058 0 00.6 3.2 7.35 7.35 0 001.9 2.8 7.5 7.5 0 002.8 1.8 11.557 11.557 0 003.1.7l-.7.7a1.222 1.222 0 00-.4.9c0 .3 0 .8.3 1zm.8 6a16.68 16.68 0 01-6.7-1.3 16.546 16.546 0 01-9-9A16.679 16.679 0 017 24a16.679 16.679 0 011.3-6.7 16.546 16.546 0 019-9A16.679 16.679 0 0124 7a16.679 16.679 0 016.7 1.3 16.546 16.546 0 019 9A16.679 16.679 0 0141 24a16.68 16.68 0 01-1.3 6.7 16.546 16.546 0 01-9 9A16.68 16.68 0 0124 41z\",\n transform: \"translate(-7 -7)\",\n fill: \"url(#access_svg__a)\"\n })));\n}\nexport default SvgAccess;","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgMedia(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32.001,\n height: 32.001\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"media_svg__a\",\n x1: 0.034,\n x2: 0.945,\n y2: 0.951,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#f182d3\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#e2334c\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Union 73\",\n d: \"M-7987 32a3 3 0 01-3-3V11a3 3 0 013-3h26a3 3 0 013 3v18a3.006 3.006 0 01-3 3zm9-16.234v8.468a1 1 0 001 1 .981.981 0 00.513-.144l7.056-4.233a1 1 0 00.485-.86.985.985 0 00-.485-.854l-7.056-4.235a.991.991 0 00-.511-.144 1 1 0 00-1.002 1.003zM-7986 6a1 1 0 01-1-1 1 1 0 011-1h24a1 1 0 011 1 1 1 0 01-1 1zm5-4a1 1 0 01-1-1 1 1 0 011-1h14a1 1 0 011 1 1 1 0 01-1 1z\",\n transform: \"translate(7990)\",\n fill: \"url(#media_svg__a)\"\n })));\n}\nexport default SvgMedia;","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgFile(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 26,\n height: 32\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"file_svg__a\",\n x1: 0.021,\n y1: 0.018,\n x2: 0.963,\n y2: 0.98,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#74edfe\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#46b5fe\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.563 36H10.438a2.356 2.356 0 01-1.706-.72A2.286 2.286 0 018 33.6V6.4a2.286 2.286 0 01.731-1.68A2.356 2.356 0 0110.438 4h12.837a4.136 4.136 0 01.975.16 2.919 2.919 0 01.813.56l8.206 8.08a2.873 2.873 0 01.569.8 3.959 3.959 0 01.163.96V33.6a2.286 2.286 0 01-.731 1.68 2.356 2.356 0 01-1.707.72zm-10.482-6.88a7.353 7.353 0 005.362-2.16 7.126 7.126 0 002.194-5.28 7.126 7.126 0 00-2.194-5.28 7.353 7.353 0 00-5.362-2.16 7.528 7.528 0 00-3.331.72 9.46 9.46 0 00-2.438 1.76v-1.84a.9.9 0 00-.244-.64 1 1 0 00-1.3 0 .9.9 0 00-.244.64v4a1.192 1.192 0 00.325.88 1.12 1.12 0 00.894.32h4.144a.931.931 0 00.65-.24.962.962 0 000-1.28.931.931 0 00-.65-.24h-2.112a4.443 4.443 0 011.869-1.52 5.753 5.753 0 012.519-.56 5.371 5.371 0 013.981 1.52 5.2 5.2 0 011.544 3.92 5.2 5.2 0 01-1.544 3.92 5.371 5.371 0 01-3.981 1.52 6.292 6.292 0 01-3.169-.88A5.608 5.608 0 0115.881 24a2.129 2.129 0 00-.406-.48 1.188 1.188 0 00-.569-.16 1.172 1.172 0 00-.894.4 1.086 1.086 0 00-.081.88 7.282 7.282 0 002.844 3.2 6.832 6.832 0 004.306 1.28z\",\n transform: \"translate(-8 -4)\",\n fill: \"url(#file_svg__a)\"\n })));\n}\nexport default SvgFile;","var _defs, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBackup(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 40,\n height: 26.667\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"backup_svg__a\",\n x1: 0.047,\n y1: 0.058,\n x2: 0.977,\n y2: 0.95,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#33cede\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#827be7\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7090\",\n d: \"M32.25 14.067a12.487 12.487 0 00-23.333-3.334A10 10 0 0010 30.667h21.667a8.309 8.309 0 00.583-16.6zm-14.4 10.416a1.66 1.66 0 01-2.35 0L12 21a1.662 1.662 0 012.35-2.35l2.317 2.317 7.466-7.467a1.662 1.662 0 112.35 2.35l-8.633 8.633z\",\n transform: \"translate(0 -4)\",\n fill: \"url(#backup_svg__a)\"\n })));\n}\nexport default SvgBackup;","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport { __ } from \"../lib/utils\";\n\nimport Collaboration from \"../../new_site/images/features-section/collaboration.svg\";\nimport Security from \"../../new_site/images/features-section/security.svg\";\nimport Access from \"../../new_site/images/features-section/access.svg\";\nimport Media from \"../../new_site/images/features-section/media.svg\";\nimport File from \"../../new_site/images/features-section/file.svg\";\nimport Backup from \"../../new_site/images/features-section/backup.svg\";\n\n\nconst FeaturesSection = () => {\n return (\n \n \n {__(\"pcloud_features_included_for_all\")}\n \n \n \n \n \n {__(\"collaboration\")}\n \n \n
    \n
  • {__(\"feature_share_dl_and_upl_links\")}
  • \n
  • {__(\"invite_to_shared_folders\")}
  • \n
  • {__(\"feature_get_detailed_stats\")}
  • \n
  • \n \n {__(\"brand_download_links\")}\n \n \n
  • \n
\n
\n
\n\n \n \n \n \n \n {__(\"PAGE_SECURITY\")}\n \n \n
    \n
  • {__(\"tsl_ssl_protection\")}
  • \n
  • {__(\"aes_encrypted_files\")}
  • \n
  • {__(\"five_copies_of_files\")}
  • \n
  • \n \n {__(\"option_for_encryption_with_crypto\")}\n \n \n
  • \n
\n
\n
\n\n \n \n \n \n \n {__(\"access_and_sync\")}\n \n \n
    \n
  • {__(\"auto_upl_camera_roll\")}
  • \n
  • \n \n {__(\"extend_through_drive\")}\n \n \n
  • \n
  • \n \n {__(\"selective_offline_access\")}\n \n \n
  • \n
  • {__(\"auto_sync_across_devices\")}
  • \n
\n
\n
\n\n \n \n \n \n \n {__(\"media_and_usability\")}\n \n \n
    \n
  • {__(\"built_in_video_player\")}
  • \n
  • {__(\"video_streaming\")}
  • \n
  • {__(\"built_in_audio_player_playlists\")}
  • \n
  • {__(\"unlimited_file_size_and_speed\")}
  • \n
\n
\n
\n\n \n \n \n \n \n {__(\"PAGE_FILE_MANAGEMENT\")}\n \n \n
    \n
  • \n \n {__(\"PAGE_FILE_VERSIONING\")}\n \n \n
  • \n
  • {__(\"data_recovery\")}
  • \n
  • \n \n {__(\"lbl_remote_upload\")}\n \n \n
  • \n
  • {__(\"doc_preview\")}
  • \n
  • \n \n {__(\"rewind_account\")}\n \n \n
  • \n
\n
\n
\n\n \n \n \n \n \n {__(\"backups_from\")}\n \n \n
    \n
  • Dropbox
  • \n
  • Facebook
  • \n
  • OneDrive
  • \n
  • Google Drive
  • \n
  • Google Photos
  • \n
\n
\n
\n
\n );\n};\n\nexport default FeaturesSection;\n\nconst Container = styled.div`\n display: grid; \n display: -ms-grid;\n grid-template-columns: 1fr 1fr 1fr; \n -ms-grid-columns: 1fr 1fr 1fr;\n grid-template-rows: 40px 1fr 1fr; \n -ms-grid-rows: 60px 1fr 1fr;\n max-width: 1180px;\n padding-bottom: 50px;\n margin: 10px auto;\n \n #tooltip {\n font-size: 13px;\n line-height: 1.15;\n color: #fff;\n padding: 16px;\n box-shadow: 0 2px 1px 0 rgba(0, 0, 0, 0.05);\n border-radius: 6px;\n max-width: 300px;\n text-align: center;\n }\n\n @supports (grid-gap: 20px) {\n grid-gap: 20px;\n padding-bottom: 0px;\n }\n\n @media (max-width: 768px) {\n display: flex;\n flex-direction: column;\n max-width: 350px;\n margin: 0 auto;\n padding-bottom: 50px;\n }\n`;\n\nconst Headline = styled.div`\n grid-column: 1 / 4;\n grid-row: 1 / 2;\n -ms-grid-column: 1;\n -ms-grid-column-span: 3;\n -ms-grid-row: 1;\n font-size: 28px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: normal;\n text-align: center;\n color: #2d231c;\n`;\n\nconst FeatureWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: start;\n box-sizing: border-box;\n padding: 20px;\n margin: 10px;\n\n @supports (grid-gap: 20px) {\n margin: 0px;\n }\n\n &.r2c1 {\n -ms-grid-column: 1;\n -ms-grid-column-span: 1;\n -ms-grid-row: 2;\n grid-column: 1 / 2;\n grid-row: 2 / 3;\n }\n\n &.r2c2 {\n -ms-grid-column: 2;\n -ms-grid-column-span: 1;\n -ms-grid-row: 2;\n grid-column: 2 / 3;\n grid-row: 2 / 3;\n }\n\n &.r2c3 {\n -ms-grid-column: 3;\n -ms-grid-column-span: 1;\n -ms-grid-row: 2;\n grid-column: 3 / 4;\n grid-row: 2;\n }\n\n &.r3c1 {\n -ms-grid-column: 1;\n -ms-grid-column-span: 1;\n -ms-grid-row: 3;\n grid-column: 1 / 2;\n grid-row: 3 / 4;\n }\n\n &.r3c2 {\n -ms-grid-column: 2;\n -ms-grid-column-span: 1;\n -ms-grid-row: 3;\n grid-column: 2 / 3;\n grid-row: 3 / 4;\n }\n\n &.r3c3 {\n -ms-grid-column: 3;\n -ms-grid-column-span: 1;\n -ms-grid-row: 3;\n grid-column: 3 / 4;\n grid-row: 3 / 4;\n }\n\n @media (max-width: 768px) {\n padding-right: 15px;\n }\n`;\n\nconst TitleContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: end;\n width: 100%;\n min-height: 120px;\n word-break: break-word;\n -ms-word-break: break-all;\n`;\n\nconst Title = styled.div`\n font-size: 23px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.16;\n letter-spacing: normal;\n text-align: left;\n margin: 20px 0;\n color: #000;\n`;\n\nconst Description = styled.div`\n width: 100%;\n font-size: 15px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.4;\n letter-spacing: normal;\n text-align: left;\n color: #777777;\n\n ul {\n li {\n margin: 8px 0px 0px 13px;\n\n &:first-of-type {\n margin-top: 0px;\n }\n\n &:last-of-type {\n margin-bottom: 0px;\n }\n\n .info_ico {\n margin-left: 10px;\n }\n }\n }\n`;\n\nconst Check = styled.span`\n display: inline-block;\n min-height: 5px;\n min-width: 9px;\n border-bottom: 2px solid #999999;\n border-left: 2px solid #999999;\n transform: rotate(-45deg);\n margin-right: 14px;\n margin-bottom: 4px;\n`;\n\nconst IconWrapper = styled.div`\n display: flex;\n width: 64px;\n height: 64px;\n justify-content: center;\n align-items: center;\n background-color: #fff;\n border-radius: 50%;\n`;","import React, { useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { sectionTitleCSS, textGradientCSS } from \"./PricingPage/styles/Plans\";\n\nimport { __ } from \"../lib/utils\";\n\nconst PremiumPlanFeatures = () => {\n\n const isRetina = useMemo(() => window.devicePixelRatio > 1, []);\n\n const getImgSrc = (imgName) => {\n return (typeof cdnPath !== \"undefined\" ? cdnPath : \"/\") + \"images/premium-plan-features/\" + imgName + (isRetina ? \"@2x\" : \"\") + \".png\";\n };\n\n return (\n \n {__(\"PricingPage2025_features_title\", \"Included with Every Premium Plan\")}\n \n \n \n {__(\"PricingPage2025_feature1_head\", \"Security\")}\n\n \n {__(\"PricingPage2025_feature1_title\", \"Keeping Your Data Safe at All Times\")}\n \n \n {__(\"PricingPage2025_feature1_desc\", \"pCloud keeps your files safeguarded by strict Swiss privacy laws and stores them in certified, secure data centres. Our TLS/SSL Channel Protection and 256-bit AES Encryption deliver military-grade security to protect your data.\")}\n \n \n \n \n \n \n\n \n \n {__(\"PricingPage2025_feature4_head\", \"File Management\")}\n \n {__(\"PricingPage2025_feature4_title\", \"Never lose a file\")}\n \n \n
    \n
  • {__(\"PricingPage2025_feature4_bul1\", \"Upload files of any size with unrestricted transfer speeds.\")}
  • \n
  • {__(\"PricingPage2025_feature4_bul2\", \"Restore previous versions of your files.\")}
  • \n
  • {__(\"PricingPage2025_feature4_bul3\", \"Recover your data from up to 30 days ago.\")}
  • \n
\n
\n
\n \n \n \n
\n\n \n \n \n {__(\"PricingPage2025_feature3_head\", \"Effortless Collaboration\")}\n \n \n {__(\"PricingPage2025_feature3_title\", \"Work Together with Ease\")}\n \n \n {__(\"PricingPage2025_feature3_desc\", \"Easily share files with password-protected links, collaborate in shared folders, gather files with requests, and impress with branded shares.\")}\n \n \n \n \n \n \n\n \n \n \n \n \n {__(\"PricingPage2025_feature5_head\", \"Media and Usability\")}\n \n {__(\"PricingPage2025_feature5_title\", \"Stream and Access Your Media Files Without Limits\")}\n \n \n {__(\"PricingPage2025_feature5_desc\", \"Freely stream and enjoy your favorite media anytime with our built-in Music and Video Player. Keep all your entertainment accessible and organised in one place.\")}\n \n \n \n\n \n \n {__(\"PricingPage2025_feature2_head\", \"Seamless Access & Sync\")}\n \n {__(\"PricingPage2025_feature2_title\", \"Your Files, Anytime, Anywhere\")}\n \n \n
    \n
  • {__(\"PricingPage2025_feature2_bul1\", \"Easily back up your phone’s gallery and desktop files.\")}
  • \n
  • {__(\"PricingPage2025_feature2_bul2\", \"Work on files without taking up local storage space.\")}
  • \n
  • {__(\"PricingPage2025_feature2_bul3\", \"Access your files even when offline and sync them later.\")}
  • \n
  • {__(\"PricingPage2025_feature2_bul4\", \"Automatically keep your files in sync across all your devices.\")}
  • \n
\n
\n
\n \n \n \n
\n\n \n \n \n {__(\"PricingPage2025_feature6_head\", \"Third-Party Backup\")}\n \n \n {__(\"PricingPage2025_feature6_title\", \"Effortless Transfer and Back up Your Data\")}\n \n \n {__(\"PricingPage2025_feature6_desc\", \"Ensure your memories and important files are always safe, no matter where they were originally stored. pCloud makes transferring your content simple, quick, and reliable.\")}\n \n \n \n \n \n \n\n
\n
\n );\n};\n\nexport default PremiumPlanFeatures;\n\nconst PremiumPlanFeaturesWrapper = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: var(--spacing-2xl);\n padding: var(--spaces-10) 0 var(--spaces-12) 0;\n\n @media (max-width: 768px) {\n gap: var(--spacing-xl);\n padding-top: var(--spaces-7);\n }\n`;\n\nconst Headline = styled.div`\n ${sectionTitleCSS}\n ${textGradientCSS}\n padding: 0 var(--spacing-xl);\n`;\n\nconst GridContainer = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: var(--spacing-lg);\n row-gap: var(--spacing-lg);\n`;\n\nconst FeatureWrapper = styled.div`\n border-radius: 24px;\n padding: var(--spacing-xl);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2xl);\n\n &.merge-2-columns {\n grid-column: 1 / 3;\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: var(--spacing-lg);\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n }\n }\n\n @media (max-width: 768px) {\n gap: var(--spacing-xl);\n grid-column: 1 / 3;\n }\n\n &.security {\n background: var(--light-blue);\n\n .feature-header {\n color: #0090FF;\n }\n\n .feature-image img {\n max-width: 372px;\n }\n\n @media (max-width: 768px) {\n .feature-image {\n order: 2;\n }\n\n .feature-text-wrapper {\n order: 3;\n }\n }\n }\n\n &.file-management {\n background: #EEFDE5;\n\n .feature-header {\n color: #43C31F;\n }\n\n .feature-image img {\n max-width: 500px;\n }\n\n @media (max-width: 768px) {\n .feature-image {\n order: 2;\n }\n\n .feature-text-wrapper {\n order: 3;\n }\n }\n }\n\n &.effortless-collaboration {\n background: #F9F4F2;\n padding-bottom: 0;\n\n .feature-header {\n color: #FB784C;\n }\n\n .feature-image img {\n max-width: 330px;\n }\n\n .feature-header {\n display: block;\n }\n }\n\n &.image-text {\n .feature-text-wrapper {\n padding-left: var(--spacing-xl);\n\n @media (max-width: 768px) {\n padding-left: 0;\n }\n }\n }\n\n &.media-usability {\n background: #F6F2FF;\n\n .feature-header {\n color: #6923D8;\n }\n\n .feature-image img {\n max-width: 528px;\n }\n }\n\n &.seamless-access {\n background: #FFF9EF;\n\n .feature-header {\n color: #FF8000;\n }\n\n ul .bullet {\n background-color: #FF8000;\n }\n\n .feature-image img {\n max-width: 502px;\n }\n\n @media (max-width: 520px) {\n overflow: hidden;\n\n .feature-image img {\n width: 502px;\n }\n }\n\n @media (max-width: 768px) {\n .feature-image {\n order: 2;\n }\n\n .feature-text-wrapper {\n order: 3;\n }\n }\n }\n\n &.third-party-backup {\n background: #F6F6FF;\n\n .feature-header {\n color: #8B76DD;\n }\n\n .feature-image img {\n max-width: 397px;\n }\n\n .feature-header {\n display: block;\n }\n }\n`;\n\nconst FeatureTextWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: var(--spacing-sm);\n`;\n\nconst FeatureHeader = styled.div`\n font-size: 15px;\n font-weight: 600;\n margin-bottom: var(--spacing-sm);\n`;\n\nconst FeatureSubHeader = styled.div`\n color: var(--color-base-black);\n font-size: 22px;\n font-weight: 600;\n`;\n\nconst FeatureDescription = styled.div`\n color: var(--color-base-black);\n font-size: 18px;\n font-weight: 400;\n line-height: 26px;\n\n ul {\n list-style-type: none;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n \n li {\n display: flex;\n gap: var(--spacing-md);\n align-items: flex-start;\n }\n\n .bullet {\n display: inline-block;\n width: 6px;\n height: 6px;\n border-radius: 9999px;\n background-color: #43C31F;\n margin-top: 8px;\n flex-shrink: 0;\n }\n }\n`;\n\nconst FeatureImage = styled.div`\n margin: 0 auto;\n display: flex;\n align-items: center;\n flex-direction: column;\n flex: 1;\n justify-content: center;\n\n img {\n width: 100%;\n height: auto;\n }\n`;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgX(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.047 13.551L30.962 0H28.14L17.79 11.764 9.53 0H0l12.494 17.791L0 32h2.822l10.923-12.426L22.47 32H32M3.841 2.083h4.336l19.96 27.937H23.8\",\n fill: \"#DADADF\"\n })));\n}\nexport default SvgX;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgAdidas(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 46,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6485\",\n d: \"M19.729 28.676h-8.058a26.453 26.453 0 008.437 3.1c0-.024-.379-3.1-.379-3.1z\",\n fillRule: \"evenodd\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6486\",\n d: \"M25.892 28.676l-.48 2.9a26.758 26.758 0 008.538-2.9z\",\n fillRule: \"evenodd\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6487\",\n d: \"M24.958 28.651h-4.421A15.048 15.048 0 0022.861 32a15.112 15.112 0 002.097-3.349z\",\n fillRule: \"evenodd\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6488\",\n d: \"M36.88 26.716l-28.216-.025a10.905 10.905 0 01-2.324-2.108h32.915a15.705 15.705 0 01-2.375 2.133z\",\n fillRule: \"evenodd\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6489\",\n d: \"M41.099 22.202l-36.477.025a17.044 17.044 0 01-1.389-2.357h39.255a12.715 12.715 0 01-1.389 2.332z\",\n fillRule: \"evenodd\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6490\",\n d: \"M15 17.34H2.273A27.414 27.414 0 010 8.583c6.568 1.141 11.645 3.8 15 8.757z\",\n fillRule: \"evenodd\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6491\",\n d: \"M28.036 17.364H17.581C17.354 10.741 19.223 4.043 22.81 0c3.663 3.919 5.557 10.617 5.226 17.364z\",\n fillRule: \"evenodd\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6492\",\n d: \"M43.575 17.34H30.591C34.178 12.379 39.331 9.6 46 8.608a29.038 29.038 0 01-2.425 8.732z\",\n fillRule: \"evenodd\"\n })));\n}\nexport default SvgAdidas;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgInstagramLight(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.668 16.001a5.333 5.333 0 1110.667.002 5.333 5.333 0 01-10.667-.002zm-2.884 0a8.216 8.216 0 1016.432 0 8.216 8.216 0 00-16.432 0zm14.838-8.542a1.92 1.92 0 103.841.004 1.92 1.92 0 00-3.841-.004zM9.536 29.025a8.84 8.84 0 01-2.971-.551 4.978 4.978 0 01-1.84-1.2 4.945 4.945 0 01-1.2-1.839 8.838 8.838 0 01-.551-2.971c-.074-1.684-.091-2.19-.091-6.463s.017-4.778.093-6.466a8.879 8.879 0 01.551-2.971 4.977 4.977 0 011.2-1.84 4.94 4.94 0 011.84-1.2 8.839 8.839 0 012.971-.551c1.684-.072 2.191-.09 6.462-.09s4.778.017 6.466.093a8.88 8.88 0 012.971.551 4.961 4.961 0 011.84 1.2 4.966 4.966 0 011.2 1.84c.353.951.54 1.956.551 2.971.078 1.688.093 2.193.093 6.466s-.016 4.778-.093 6.466a8.872 8.872 0 01-.551 2.971 5.3 5.3 0 01-3.037 3.036 8.84 8.84 0 01-2.971.551c-1.687.078-2.193.093-6.466.093s-4.778-.016-6.465-.093M9.4.101a11.737 11.737 0 00-3.88.74 7.852 7.852 0 00-2.834 1.846A7.829 7.829 0 00.84 5.521a11.736 11.736 0 00-.74 3.88c-.082 1.71-.1 2.255-.1 6.6s.018 4.89.1 6.6c.026 1.326.276 2.638.74 3.88a7.823 7.823 0 001.846 2.834 7.847 7.847 0 002.834 1.846c1.242.464 2.554.714 3.88.74 1.707.078 2.251.1 6.6.1s4.891-.018 6.6-.1a11.738 11.738 0 003.884-.743 8.182 8.182 0 004.68-4.68c.463-1.241.712-2.552.736-3.877.078-1.707.1-2.251.1-6.6s-.018-4.89-.1-6.6a11.735 11.735 0 00-.743-3.884 7.868 7.868 0 00-1.846-2.834A7.847 7.847 0 0026.482.841 11.718 11.718 0 0022.6.101c-1.707-.081-2.253-.1-6.6-.1-4.347 0-4.889.018-6.6.1z\",\n fill: \"#DADADF\"\n })));\n}\nexport default SvgInstagramLight;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgNike(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 62,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6476\",\n d: \"M7.83 10.79c.106.035.247.071.353.106-2.719 6.065-2.542 12.059 5.368 12.059 13.383-3.42 13.383-3.42 22.494-5.959l-5.05-.106c-.247-1.763-.53-3.526-.777-5.289a308.155 308.155 0 01-1.942 5.148c-1.307.035-2.613.106-3.884.141 1.872-5.571 3.778-11.142 5.65-16.714 1.342 0 2.684.035 4.026.071-1.095 3.315-1.095 3.315-.989 3.526L36.151.282 47.769.07c-.283.987-.565 2.01-.848 3-1.377.071-2.79.141-4.167.247a14.418 14.418 0 00-.918 3.1c1.236.071 2.437.141 3.672.247-.353 1.023-.742 2.045-1.095 3.068-1.342.106-2.684.247-4.026.353-.388 1.164-.777 2.292-1.13 3.456 1.271.035 2.542.106 3.814.141l-.424 1.375h.812q9.27-2.486 18.539-4.9-23.465 10.208-46.966 20.451c-18.468 6.1-18.751-9.168-7.2-19.817zm.883 6.065C10.62 11.249 12.527 5.607 14.434 0h4.241l.106 6.135c.706-2.01 1.448-4.02 2.154-5.994 1.236-.035 2.472-.106 3.708-.106-1.836 5.606-3.672 11.248-5.509 16.855h-4.238c-.035-1.975-.106-3.949-.106-5.924a49.166 49.166 0 00-2.013 5.924c-1.377-.035-2.719-.035-4.061-.035zm11.053 0Q22.573 8.498 25.451.141h4.024c-1.942 5.5-3.92 11-5.862 16.537-1.271.071-2.578.141-3.849.176zm15.078-1.693c-.742-6.382-.742-6.382-.742-7.9 5.4-6.276 5.4-6.276 5.756-6.417-1.66 4.76-3.319 9.556-5.014 14.316z\",\n fillRule: \"evenodd\"\n })));\n}\nexport default SvgNike;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCocaCola(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 98,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.614 28.001c-3.625-2.374-8.625-2.749-16.625-.5-8.5 2-11.375 3.249-15.125.75-1.375-1.25-2-3.249-1.5-6.248.875-4.749 3.25-9.372 7.5-14.5 2.375-2.624 4.625-4.874 7.5-5.873 2.25-.625 2 1.125 1.75 1.375a2.056 2.056 0 00-1.125.25 3.022 3.022 0 00-1.125 2c-.125 1.5 1.5 1.25 2.25.375.75-1 1.875-2.749 1-4.5a2.431 2.431 0 00-1.75-1.125c-2.625-.125-5.125 1.125-7.5 2.5a32.008 32.008 0 00-11.25 13.621c-1.25 3.124-2.5 7.748-.75 11.5 1.375 2.624 4.25 4 7.625 3.624a56.967 56.967 0 007.25-1.5c2-.5 11.875-3.874 15.125 2a4.357 4.357 0 013.75-2.124A11.782 11.782 0 0142.364 32c-.625-1.125-2.875-2.749-4.75-4z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.114 8.134c-1.875-1.249-5.625 1.124-8.625 5.122-2.75 3.623-3.875 7.746-2.625 9.62 1.875 2.249 5.5-1 7-2.749l.25-.25a20.114 20.114 0 002.625-3.748 10.986 10.986 0 00.75-1.249c.375-.125 1-.25 1.5-.375 0 0-2.25 3.748-2 5.622.125.625 0 2.624 2.125 3.248 2.75.5 4.875-1.624 6.875-3.5l.5-.5a1.258 1.258 0 01-.125.375c-.75 2.749.25 3.373 1 3.623 2 .625 4.5-2.374 4.5-2.374-.125.875-.25 1.749.75 2.374a2.923 2.923 0 002.625-.625c2.625-1.749 4.625-4.622 6.25-7.121h-1.125s-2.625 3.748-4.375 4.622a.6.6 0 01-.5 0c-.25-.25-.125-.625 0-.875l6.625-11.369h-3.375a2.731 2.731 0 00-.375.625l-.125-.125c-1.875-2.624-6.25 1.374-9.5 6.122a31.093 31.093 0 01-4.5 5.372s-2.5 2.249-3.5.625a3.118 3.118 0 010-2.374 19.339 19.339 0 015.75-8.5 2.121 2.121 0 011.75-.5.79.79 0 01.125 1.124 1.881 1.881 0 00-1.375.5 2.01 2.01 0 00-.75 2.124c1.125 1.624 3.375-1.5 3.25-3.373a1.8 1.8 0 00-1-1.624 3.312 3.312 0 00-2.875 0 11.179 11.179 0 00-3.75 2.873c-1.25 1.374-3.375 2.873-4 2.749.25-.5 2.125-4.123.25-5.5zm14.875 5.372c.625-.875 2.375-3 2.75-3.373 1.375-1.249 2-.75 2-.375-1.375 2.374-2.875 5.122-4.375 7.621l-.5.75a7.573 7.573 0 01-2.375 2.5.634.634 0 01-.625-.125c-.25-.125-.25-.375-.25-.625a18.924 18.924 0 013.375-6.373zm-16.875 1.5c0 .125-1.375 2.249-1.375 2.249a10.634 10.634 0 01-3.125 3.123c-.375.125-.875.25-1.125-.125-.5-.625-.25-1.624 0-2.374l.125-.25a20.515 20.515 0 012.75-4.872 4.41 4.41 0 002.75 2.124c.125 0 .125 0 0 .125zm1.25-2.624l-.625 1.374c-.125.125-.25 0-.375 0h-.25a2.207 2.207 0 01-1.625-1.5c-.25-1.249.875-2.249 1.375-2.624a1.332 1.332 0 011.625-.125 1.743 1.743 0 01.375 1.124 5.36 5.36 0 01-.5 1.749zm39.258 4.122a1.858 1.858 0 00-1.75-1c-2.5.25-4.875 2.249-6.125 5.124a16.688 16.688 0 00-1.25 4.624 12.685 12.685 0 014.125-3.124 8.172 8.172 0 011.5-3.5c.5-.75 1.375-1.75 2.375-1.5.875.25.625 2.874-.625 5.249a15.457 15.457 0 01-3.625 4.749c-1.25 1-3 2.249-4.625 1.375a3.465 3.465 0 01-1.375-3.374c.5-4.5 2.5-8.373 5.5-12.746 3-4.124 6.375-8.248 10.875-10.5a2.6 2.6 0 012.5-.25 16.717 16.717 0 00-6.25 6.623c-.5 1.125-1.25 2.624-.5 3.874a1.714 1.714 0 001.625.75c2.5-.625 4.125-2.874 5.375-5a11.985 11.985 0 001.375-5v-.75c1.125-.625 3.625.5 3.625.5 1.875.625 5.875 3.749 7.25 4.249.625-.75 1.75-1.874 2.375-2.5l-.875-.5a49.658 49.658 0 00-4.375-2.5 8.769 8.769 0 00-7.5-.75 5.524 5.524 0 01-1 .375c-1-1.125-2.75-1-4-.75-4.5 1.25-8.625 4.374-13.125 9.872-3.25 4.249-5.375 8-6.375 11.622-.875 2.5-1.125 6 1 8.248 1.75 1.874 4 1.375 5.625.75a17.872 17.872 0 008.25-9.747c.125-1.25.625-3.124 0-4.5zm8.125-13.371c-.5 5.374-4.625 8.5-5.625 8.748-.625.125-1.75-.125-.75-2.374a14.287 14.287 0 016.375-6.873v.5zm24.628.626A11.605 11.605 0 0186 5.509c-.75.875-1.5 1.75-2.25 2.75 4 1 8.125-1.25 10.5-3.375A15.743 15.743 0 0098 .009a17.853 17.853 0 01-4.625 3.75zM49.37 10.882l1.625-2.625H48.12l-1.625 2.625z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86 28.251c-.375.25-.75 0-.625-.5a22.248 22.248 0 012-3.749L92 15.884h-3.125a7.405 7.405 0 01-.5.75 5.436 5.436 0 00-.75-.875 2.8 2.8 0 00-2.625.125c-3.375 2-5.875 5.873-7.75 8.873 0 0-2 3.374-3.125 3.624-.875.125-.75-1.125-.75-1.375a21.5 21.5 0 012-5.623 38.413 38.413 0 005.125-4.249 58.854 58.854 0 007.25-8.373 5.159 5.159 0 01-1.125.125C83.75 12.76 78 18.508 76.25 19.386c.75-1.874 5.75-10.747 10-15l.625-.625a8.922 8.922 0 013-2.249c.125 0 .25 0 .25.25a3.775 3.775 0 01-.625 2l-.5 1s.625-.125 1.125-.25A4.93 4.93 0 0091 1.263c-.125-.375-.375-.75-.75-.75-1.25-.25-2.625.75-3.75 1.5-5.75 4.5-10.625 10.872-14.75 19.744a2.978 2.978 0 01-1.75.375 16.055 16.055 0 001.25-3.249c0-.375.125-.75.125-1.125a2.163 2.163 0 00-.875-2 2.929 2.929 0 00-2.5.125c-3 1.25-5.25 4.374-6.875 6.873a15.423 15.423 0 00-2 5.373c-.125 1.5.125 2.5 1.125 3a2.814 2.814 0 002.5-.25c3.125-1.625 5.25-4.874 6.875-7.748a4.994 4.994 0 001.625-.25c0 .125-.375 1.25-.375 1.25-1.125 3.124-1.625 5.249-.5 6.5 1.5 1.749 3.875 0 5.75-2.5-.375 2.874 1.125 3.374 2.25 3.124a9.327 9.327 0 003.5-2.5c-.25.875-.125 2.374 1 2.5A3.073 3.073 0 0085 30.63c2.625-1.375 5.625-6 6.5-7.373h-1c-1.25 1.749-2.625 4-4.5 5zm-23-.25a1.776 1.776 0 01-.25-.75c0-1.75 1.875-4.874 3.25-6.623a5.233 5.233 0 002.625 2.374c-1 2-4.25 6.5-5.625 5zm6.125-6a2.486 2.486 0 01-2-2 2.679 2.679 0 011.5-2.749 1.736 1.736 0 011.375-.25 1.357 1.357 0 01.5 1.125 2.126 2.126 0 01-.125.875v.125a19.936 19.936 0 01-1.25 2.874zm12.75 5.374l-.25.25a1.593 1.593 0 01-1.375.625c-.125 0-.25-.25-.25-.375a7.07 7.07 0 011-3.124l.125-.25c1.375-2.249 3-5 5.375-6.873a1.643 1.643 0 011.25-.375.649.649 0 01.25.5s0 .25-.125.25c-.625 1.125-1.25 2.124-1.875 3.249-1.375 2-2.625 4.249-4.125 6.123z\"\n })));\n}\nexport default SvgCocaCola;","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgUber(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 92.179,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6481\",\n d: \"M5.3 22.854a7.881 7.881 0 001.618 2.652 6.962 6.962 0 002.449 1.685 7.991 7.991 0 003.079.584 7.618 7.618 0 003.034-.607 7.463 7.463 0 002.472-1.708 7.743 7.743 0 001.64-2.629 9.5 9.5 0 00.584-3.416V0H24.9v31.461h-4.675v-2.922a10.835 10.835 0 01-3.708 2.561 11.751 11.751 0 01-4.607.9 12.473 12.473 0 01-4.7-.876 11 11 0 01-3.775-2.494 11.766 11.766 0 01-2.514-3.888A13.328 13.328 0 010 19.685V0h4.719v19.416a9.683 9.683 0 00.581 3.438z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6482\",\n d: \"M33.033 0v11.461a12.021 12.021 0 013.638-2.495 10.914 10.914 0 014.494-.921 11.852 11.852 0 014.719.944 11.889 11.889 0 016.382 6.382 11.741 11.741 0 01.944 4.674 11.58 11.58 0 01-.939 4.655 11.948 11.948 0 01-6.382 6.36 11.853 11.853 0 01-4.718.94 11.07 11.07 0 01-4.517-.921 11.94 11.94 0 01-3.663-2.494v2.876h-4.494V0zm.517 23.146a7.82 7.82 0 001.685 2.517 8.133 8.133 0 002.517 1.708 7.652 7.652 0 003.1.629 7.541 7.541 0 003.056-.629 7.862 7.862 0 002.494-1.708 8.335 8.335 0 001.685-2.517 7.651 7.651 0 00.629-3.1 7.81 7.81 0 00-.629-3.124 8.26 8.26 0 00-1.685-2.539 7.567 7.567 0 00-2.494-1.685 7.9 7.9 0 00-8.629 1.685 8.063 8.063 0 00-1.708 2.539 7.811 7.811 0 00-.629 3.124 7.894 7.894 0 00.608 3.1z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6483\",\n d: \"M55.771 15.416a12.226 12.226 0 012.472-3.8 11.891 11.891 0 0112.989-2.629 10.873 10.873 0 013.64 2.494 11.4 11.4 0 012.382 3.775 12.886 12.886 0 01.854 4.742v1.483H59.46a7.684 7.684 0 00.9 2.584 7.79 7.79 0 001.685 2.067 7.7 7.7 0 002.292 1.371 7.486 7.486 0 002.719.494 7.863 7.863 0 006.607-3.371l3.281 2.427a11.973 11.973 0 01-9.888 4.9 12.657 12.657 0 01-4.786-.9 11.656 11.656 0 01-3.865-2.517 11.94 11.94 0 01-2.584-3.8 12.262 12.262 0 01-.045-9.326zm6.315-1.775a7.66 7.66 0 00-2.539 4.247h13.978a7.434 7.434 0 00-2.494-4.247 7.065 7.065 0 00-8.944 0z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6484\",\n d: \"M86.606 14.157a6.086 6.086 0 00-1.438 4.27V31.46h-4.539V8.539h4.494v2.831a6.389 6.389 0 012.225-2.2 6.3 6.3 0 013.258-.809h1.573v4.225h-1.888a4.77 4.77 0 00-3.685 1.571z\"\n })));\n}\nexport default SvgUber;","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgEtihad(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 119,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26441\",\n d: \"M66.887 12.482l3.629-3.916V.834c0-.06.079-.119.079-.119l.535-.258V.02h-4.878v.437l.5.318c.139.079.159.139.159.2v4.432h-9.756l-2.2 2.8V.992l.02-.139a.491.491 0 01.119-.079l.456-.3.04-.02V.02h-4.864v.437l.476.318c.079.04.1.079.119.079v13.277l-.02.179a.2.2 0 01-.1.079l-.476.318v.437h4.858v-.437l-.516-.318-.119-.06V8.247l.516.159.674-.4a1.212 1.212 0 01.3-.139.658.658 0 01.278-.04h10.173v4.651z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26442\",\n d: \"M118.703 5.923a7.794 7.794 0 00-3.887-4.412C113.016.497 110.434 0 106.963 0H93.717v.437s.555.378.575.378v1.57h12.651a11.517 11.517 0 015.574 1.015 4.7 4.7 0 012.7 4.194 4.372 4.372 0 01-.694 2.4 5.454 5.454 0 01-2.1 1.809 12.559 12.559 0 01-5.552.954h-6.6V3.475h-3.609v10.653l-.02.159-.1.1-.436.278-.04.02v.437h10.827a25.375 25.375 0 004.858-.358 11.413 11.413 0 004.144-1.709 7.169 7.169 0 002.558-2.783 5.585 5.585 0 00.555-2.5 8.174 8.174 0 00-.3-1.848\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26443\",\n d: \"M71.111 14.549a.8.8 0 01-.2-.06l9.082-9.461-2.1-2.246-11.759 12.324h5.414v-.517h-.2c-.079-.02-.159-.02-.238-.04\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26444\",\n d: \"M78.865 2.186l2.32 2.465 2.4 2.425H79.54L77.318 9.4l.476.338.516-.278a.5.5 0 01.139-.04h7.317l4.779 5.128s-.079.079-.5.079h-.178v.517h5.414L80.947 0z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26445\",\n d: \"M44.123.457l.476.318c.119.079.178.139.178.2v13.118l-.04.179a.6.6 0 01-.139.1l-.5.318v.437h4.838v-.437l-.436-.318a.716.716 0 01-.1-.08h-.02V.974l.02-.139.119-.1.436-.3V0h-4.832z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26446\",\n d: \"M23.857 12.224l-.635.358a1.446 1.446 0 01-.278.139l-10.807.02a12.755 12.755 0 01-5.592-.954 4.528 4.528 0 01-2.776-4.234 4.355 4.355 0 01.714-2.385 6.2 6.2 0 014.2-2.663 7.216 7.216 0 011.329-.119h5.572c.337-.02.278.06.3.1l-.059.4h.456l2.38-2.882h-6.643a31.781 31.781 0 00-3.569.159c-.436.06-.853.139-1.269.219a11.81 11.81 0 00-3.153 1.232 8.312 8.312 0 00-3.47 3.518 5.856 5.856 0 00-.555 2.643c0 2.445 1.309 4.393 3.887 5.784a11.932 11.932 0 003.906 1.312 27.829 27.829 0 004.343.258h10.053l2.4-2.922h-.2z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26447\",\n d: \"M19.058 8.587l2.34-2.942H5.633L4.047 8.01h14.218c.258.02.357.1.377.139l-.059.417.476.02z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26448\",\n d: \"M18.086 2.783l.456.159.059.02.694-.338a1.081 1.081 0 01.575-.179h8.685v11.707l-.04.159c-.04.04-.079.079-.1.079l-.5.338v.437h4.858v-.437l-.5-.318-.119-.119V2.445h7.734c.3.04.337.1.337.119v.417h.436l2.4-2.922H20.286z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26449\",\n d: \"M21.933 31.781l3.669-9.282h1.19l3.629 9.282h-1.888l-.734-1.928h-2.4l-.516-1.312h2.419l-.952-2.564-.258-.8-.258.8-2.181 5.8z\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 202\",\n d: \"M34.981 22.499h1.805v9.282h-1.805z\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26450\",\n d: \"M47.216 31.781l-2.122-3.041h-1.035v3.041h-1.8v-9.282h2.974a3.715 3.715 0 012.5.735 2.752 2.752 0 01.853 2.206 3.371 3.371 0 01-.5 1.868 2.744 2.744 0 01-1.388 1.153l2.518 3.279h-2zm-3.133-4.313h1.17c1.011 0 1.527-.616 1.527-1.829a1.982 1.982 0 00-.357-1.272 1.432 1.432 0 00-1.19-.437h-1.15z\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26451\",\n d: \"M55.544 31.781l-2.736-9.282h1.864l1.705 6.619h.079l1.646-5.128-.476-1.491h1.765l2.142 6.619h.04l1.725-6.619h1.765l-2.8 9.282h-1.527l-1.864-5.744-1.864 5.744z\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26452\",\n d: \"M68.038 31.781l3.668-9.282h1.19l3.629 9.282h-1.864l-.734-1.928h-2.419l-.516-1.312h2.439l-.972-2.564-.258-.8-.258.8-2.181 5.8z\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26453\",\n d: \"M82.156 31.781v-3.8l-3.034-5.482h2l2 3.916 2.082-3.916h1.765l-3.034 5.486v3.8z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26454\",\n d: \"M93.4 32a4.043 4.043 0 01-2.36-.616v-1.888a3.5 3.5 0 002.4.954c1.11 0 1.666-.437 1.666-1.292a.951.951 0 00-.337-.775 3.174 3.174 0 00-1.17-.477l-.337-.08a2.61 2.61 0 01-2.34-2.663 2.689 2.689 0 01.853-2.127 3.619 3.619 0 012.439-.755 4.022 4.022 0 012.36.6v1.888a3.721 3.721 0 00-2.439-.914 1.915 1.915 0 00-1.15.278.991.991 0 00-.357.855.962.962 0 00.3.775 2.791 2.791 0 001.13.477l.337.079a3.658 3.658 0 011.844.914 2.319 2.319 0 01.575 1.709 2.967 2.967 0 01-.873 2.246 3.477 3.477 0 01-2.538.815\"\n })));\n}\nexport default SvgEtihad;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDdb(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 87.002,\n height: 32.002,\n fill: \"#fff\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 4515\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26461\",\n d: \"M38.37 2.346h-1.108a1.088 1.088 0 011.108 0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Union 92\",\n d: \"M.401 32.002h-.4V3.351h12.031a16.8 16.8 0 015.012.7 11.355 11.355 0 017.316 7.338 19.351 19.351 0 01.8 8.345 14.956 14.956 0 01-1.5 5.527 11.474 11.474 0 01-8.12 6.433 18.559 18.559 0 01-3.31.3zM6.315 8.981v8.646c0 2.867 0 5.831-.1 8.747 0 .2 0 .3.3.3h5.313a6.614 6.614 0 006.717-5.226 14.375 14.375 0 000-7.439 6.613 6.613 0 00-2.105-3.72 7.421 7.421 0 00-4.712-1.71H6.615c-.298 0-.298.101-.298.402zM53.33 31.998c-.307 0-.4-.1-.4-.4V3.651c0-.3.1-.4.4-.4h13.329a14.076 14.076 0 015.012.8 5.725 5.725 0 013.812 5.027 7.983 7.983 0 01-.4 3.72 6.634 6.634 0 01-3.108 3.314c.035.073.05.122.035.157s-.069.07-.149.1a1.788 1.788 0 01-.087.042 6.988 6.988 0 015.213 6.936 7.114 7.114 0 01-1.8 5.426 8.806 8.806 0 01-4.211 2.615 13.944 13.944 0 01-4.109.6zm6.115-12.463v7.237c0 .3.1.3.3.3h3.61a27.015 27.015 0 002.8-.1h.014a7.4 7.4 0 002.092-.2 3.1 3.1 0 002.506-2.412l.017-.1a4.677 4.677 0 00.084-1.608 3.57 3.57 0 00-2.105-3.014 4.768 4.768 0 00-2-.4h-7.017c-.299-.003-.299.098-.299.297zm-.1-11.058v6.132a.265.265 0 00.3.3h3.306a25.184 25.184 0 002.708-.1h.01a3.978 3.978 0 001.093-.1 2.882 2.882 0 002.607-2.311 6.4 6.4 0 00.1-1.409 2.7 2.7 0 00-1.8-2.514 4.772 4.772 0 00-1.706-.3h-6.312c-.305.002-.305.103-.305.302zM26.968 31.9c-.3 0-.4-.1-.4-.4V3.751c0-.2 0-.4.3-.4h12.63a12.059 12.059 0 016.915 2.01 11.4 11.4 0 014.712 6.534 18.923 18.923 0 01-.5 12.463 11.806 11.806 0 01-2.317 3.821 11.337 11.337 0 01-3.595 2.615 14.3 14.3 0 01-5.815 1.1zm5.813-22.818v17.291a.267.267 0 00.3.3h5.312a8.1 8.1 0 003.011-.6 6.58 6.58 0 003.605-4.524 15.087 15.087 0 000-7.639 7.414 7.414 0 00-2.7-4.02 8.112 8.112 0 00-4.11-1.206h-5.113c-.305-.004-.305.098-.305.398z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Subtraction 72\",\n d: \"M81.501 11a5.505 5.505 0 01-5.5-5.5 5.505 5.505 0 015.5-5.5 5.507 5.507 0 015.5 5.5 5.507 5.507 0 01-5.5 5.5zm0-8a2.5 2.5 0 00-2.5 2.5 2.5 2.5 0 002.5 2.5 2.5 2.5 0 002.5-2.5 2.5 2.5 0 00-2.5-2.5z\"\n }))));\n}\nexport default SvgDdb;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPepsi(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 101.183,\n height: 30.437,\n fill: \"#fff\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 4516\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.763 14.996a5.572 5.572 0 00-.074-.633 7.655 7.655 0 00-.26-1.265 6.92 6.92 0 00-6.609-5.023 7.8 7.8 0 00-.928.074 7.081 7.081 0 00-6.052 8.074 6.894 6.894 0 006.944 6.14 7.8 7.8 0 00.928-.074 7.059 7.059 0 004.827-2.6.29.29 0 00.074-.3.473.473 0 00-.149-.26 15.233 15.233 0 00-1.374-.707c-.111-.074-.223-.112-.26-.149a.5.5 0 00-.3-.074.383.383 0 00-.3.149 4.607 4.607 0 01-2.859 1.563 3.391 3.391 0 01-.594.037 4.7 4.7 0 01-4.382-3.014v-.037l.037-.037a6.082 6.082 0 012.3-.447 2.113 2.113 0 01.483.037c.371.037.743.074 1.151.112a15.533 15.533 0 002.414.186 12.054 12.054 0 001.634-.112 8.385 8.385 0 003.045-1.042c.334-.149.3-.3.3-.6m-2.451-.893a8.874 8.874 0 01-1.448.3 7.388 7.388 0 01-1 .074 17.445 17.445 0 01-1.968-.112h-.037c-.631-.037-1.188-.074-1.745-.074a9.859 9.859 0 00-1.114.074 7.568 7.568 0 00-1.857.447v-.075a4.772 4.772 0 014.084-4.167 3.187 3.187 0 01.594-.037 4.947 4.947 0 014.53 3.535v.037zm36.467-5.207a.333.333 0 00-.334-.335h-1.782a.333.333 0 00-.334.335v12.8a.333.333 0 00.334.335h1.782a.333.333 0 00.334-.335zM99.55 3.982a1.637 1.637 0 101.634 1.637 1.675 1.675 0 00-1.634-1.637M75.674 22.363h.334a6.638 6.638 0 004.827-2.009 7.268 7.268 0 00-5.087-12.279 6.985 6.985 0 00-6.8 5.284 15.457 15.457 0 00-.3 3.274v10.042a.333.333 0 00.334.335h1.782a.333.333 0 00.334-.335v-6.321l.111.074a6.911 6.911 0 004.456 1.935m.074-11.833a4.593 4.593 0 014.53 4.8 4.463 4.463 0 01-4.419 4.726 4.753 4.753 0 01-3.3-1.265 4.6 4.6 0 01-1.374-3.386 4.76 4.76 0 014.567-4.874M43.63 22.363h.334a6.638 6.638 0 004.827-2.009 7.268 7.268 0 00-5.087-12.279 6.985 6.985 0 00-6.8 5.284 15.457 15.457 0 00-.3 3.274v10.042a.333.333 0 00.334.335h1.782a.333.333 0 00.334-.335v-6.321l.074.074a7.107 7.107 0 004.493 1.935m.074-11.833a4.593 4.593 0 014.53 4.8 4.463 4.463 0 01-4.413 4.726 4.753 4.753 0 01-3.3-1.265 4.6 4.6 0 01-1.374-3.386 4.76 4.76 0 014.567-4.874m40.88 9.6a7.715 7.715 0 005.458 2.233h.074c3.787-.037 5.5-2.121 5.5-4.167 0-2.828-2.673-3.609-3.49-3.8-.26-.037-.52-.112-.817-.149a16.817 16.817 0 01-1.968-.447c-.446-.112-1.857-.6-1.857-1.674 0-1.191 1.3-1.823 2.525-1.823a4.28 4.28 0 012.971 1.042.552.552 0 00.334.149.6.6 0 00.334-.112 14.134 14.134 0 001.225-1.079.423.423 0 00.111-.3.427.427 0 00-.186-.335 7.144 7.144 0 00-4.862-1.631c-2.859 0-5.013 1.823-5.013 4.279 0 1.935 1.6 3.312 4.456 3.87l1.782.335c1.188.223 1.857.856 1.819 1.712s-1.077 1.749-2.785 1.749a5.422 5.422 0 01-3.676-1.488.386.386 0 00-.3-.149.4.4 0 00-.26.112c-.111.074-1.3 1.042-1.448 1.153a.205.205 0 00-.074.186.472.472 0 00.149.335M27.886 6.959a10.991 10.991 0 01.483 3.126 10.715 10.715 0 01-4.382 8.6c-4.567 3.386-11.251 3.386-20.459 6.288A15.128 15.128 0 0030.3 15.259a15.306 15.306 0 00-2.414-8.3\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.247 3.051A15.17 15.17 0 002.971 24.223 31.5 31.5 0 0024.247 3.051\"\n }))));\n}\nexport default SvgPepsi;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgSnap(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32.002,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Subtraction 75\",\n d: \"M18.582 32h-5.924c-1.054 0-1.977 0-2.821.007-.449 0-.9-.006-1.343-.012l-.671-.009a10.316 10.316 0 01-3.168-.465 6.259 6.259 0 01-1.923-1.042 6.909 6.909 0 01-1.926-2.325A7.252 7.252 0 01.152 26a13.73 13.73 0 01-.14-1.868v-.012c0-.085 0-.167-.007-.249L.016 8.129a11.891 11.891 0 01.328-3.048 6.536 6.536 0 011.672-2.916 6.657 6.657 0 012.5-1.64A8.282 8.282 0 016.4.102 12.94 12.94 0 017.845.03h.316V0h15.69a.034.034 0 00.007.018h.084a11.617 11.617 0 012.989.325A6.613 6.613 0 0129.831 2a6.941 6.941 0 011.332 1.779 6.9 6.9 0 01.65 1.993 9.709 9.709 0 01.157 1.717l.031 16.186v.185a13 13 0 01-.276 2.8 6.714 6.714 0 01-2.125 3.541 6.545 6.545 0 01-3.217 1.563 11.71 11.71 0 01-1.919.2c-1.719.025-3.588.036-5.882.036zm-2.885-5h.174a5.207 5.207 0 003.155-1.244 4.555 4.555 0 011.8-.917 5.941 5.941 0 01.948-.08 6.444 6.444 0 011.314.14 2.772 2.772 0 00.5.063h.024a.332.332 0 00.35-.259c.045-.163.086-.33.133-.542.094-.434.163-.7.328-.724 1.754-.273 2.787-.669 2.989-1.147a.49.49 0 00.038-.154.284.284 0 00-.234-.294c-3.423-.562-4.914-4.1-4.929-4.132a.014.014 0 010-.008v-.006a1.261 1.261 0 01-.123-1.049c.227-.53.973-.768 1.466-.925.138-.042.25-.08.335-.113.894-.353 1.077-.719 1.073-.965a.784.784 0 00-.587-.636h-.008a1.106 1.106 0 00-.419-.08.836.836 0 00-.367.073 3.012 3.012 0 01-1.119.311.965.965 0 01-.622-.21c.009-.174.021-.357.033-.533l.006-.086v-.077c.1-1.6.228-3.585-.279-4.727A6.159 6.159 0 0015.956 5h-.473a6.141 6.141 0 00-5.7 3.674c-.511 1.141-.385 3.127-.283 4.723l.013.221.008.126.021.352a.969.969 0 01-.686.21 2.845 2.845 0 01-1.188-.315.733.733 0 00-.287-.056.977.977 0 00-.95.626c-.093.473.527.828 1.063 1.042.085.032.194.068.332.112.5.158 1.242.4 1.468.926a1.265 1.265 0 01-.118 1.052s-.007.007-.007.01a8.11 8.11 0 01-1.256 1.947 6.1 6.1 0 01-3.674 2.185.284.284 0 00-.237.294.446.446 0 00.038.15c.207.483 1.241.881 2.992 1.15.163.024.229.28.329.731v.027c.036.167.074.339.127.515a.343.343 0 00.374.269 2.724 2.724 0 00.461-.066l.039-.008.049-.009a6.5 6.5 0 011.262-.138 5.911 5.911 0 01.947.08 4.485 4.485 0 011.8.919 5.213 5.213 0 003.153 1.241h.059z\"\n })));\n}\nexport default SvgSnap;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLinkedin(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 126,\n height: 32,\n fill: \"#fff\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 4517\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26468\",\n d: \"M4.949 4.748H0v22.5h14.023v-4.539H4.949z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 204\",\n d: \"M16.291 11.974h4.743v15.277h-4.743z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26469\",\n d: \"M18.56 4.335a2.731 2.731 0 00-2.681 2.684 2.78 2.78 0 002.681 2.89 2.731 2.731 0 002.681-2.684 2.92 2.92 0 00-2.681-2.89z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26470\",\n d: \"M56.71 11.974h-5.779l-5.362 6.194V4.748h-4.738v22.5h4.743v-7.635l4.949 7.635h5.98l-5.98-8.258z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26471\",\n d: \"M32.583 11.561a5.173 5.173 0 00-4.537 2.477v-2.064h-4.537v15.277h4.743v-7.638c0-2.065.412-3.923 2.887-3.923s2.47 2.271 2.47 4.129v7.432h4.743v-8.464c.005-4.126-.82-7.226-5.769-7.226z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26472\",\n d: \"M64.135 11.355c-4.743 0-8.455 3.1-8.455 8.052s3.712 8.048 8.455 8.048a7.722 7.722 0 006.393-3.1l-3.3-2.477a3.962 3.962 0 01-3.3 1.858 3.394 3.394 0 01-3.506-2.89h10.93v-1.439c.001-4.752-2.886-8.052-7.217-8.052zm2.475 6.4h-6.187a3.17 3.17 0 013.3-2.89 2.821 2.821 0 012.887 2.89z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26473\",\n d: \"M84.55 4.748v8.877a5.848 5.848 0 00-4.949-2.065c-4.331 0-7.011 3.923-7.011 8.258 0 4.748 3.093 7.845 7.63 7.845a5.777 5.777 0 004.743-2.477v2.062h4.326v-22.5H84.55zm-3.3 18.581a3.631 3.631 0 01-3.712-3.923 3.718 3.718 0 117.424 0c0 2.477-1.443 3.923-3.712 3.923z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26474\",\n d: \"M123.731 0H96.51a2.29 2.29 0 00-2.268 2.271v27.458A2.29 2.29 0 0096.51 32h27.221a2.29 2.29 0 002.268-2.271V2.271A2.29 2.29 0 00123.731 0zm-20.209 27.252h-4.743V11.974h4.743zm.412-20.232a2.731 2.731 0 01-2.681 2.68 2.684 2.684 0 112.681-2.684zm17.323 20.232h-4.743v-7.433c0-1.858 0-4.129-2.475-4.129s-2.887 1.858-2.887 3.923v7.639h-4.743V11.974h4.533v2.065a4.946 4.946 0 014.537-2.477c4.743 0 5.774 3.1 5.774 7.226z\"\n }))));\n}\nexport default SvgLinkedin;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBmw(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32.002,\n height: 31.999,\n fill: \"#fff\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 4518\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.483 16a9.477 9.477 0 01-9.481 9.481V16zm-9.481-9.481V16H6.52a9.477 9.477 0 019.481-9.481z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Subtraction 68\",\n d: \"M16.001 32a15.9 15.9 0 01-11.315-4.686A15.893 15.893 0 01.001 16 15.9 15.9 0 014.687 4.685 15.9 15.9 0 0116.001 0a15.894 15.894 0 0111.313 4.686A15.9 15.9 0 0132.001 16a15.893 15.893 0 01-4.687 11.312A15.9 15.9 0 0116.001 32zm0-30.957A14.976 14.976 0 001.042 16a14.976 14.976 0 0014.959 14.96A14.976 14.976 0 0030.96 16 14.976 14.976 0 0016.001 1.042z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.166 8.281c.511-.535.8-1.153.289-1.743a1 1 0 00-1.133-.232l-.039.015.012-.034a.924.924 0 00-.322-.973.968.968 0 00-.715-.2c-.48.049-.85.374-1.855 1.488-.3.336-.745.866-1.01 1.21l2.762 2.6c.911-1.002 1.287-1.376 2.011-2.131zm-3.6-.637a17.089 17.089 0 011.409-1.531.73.73 0 01.291-.183.342.342 0 01.411.263.6.6 0 01-.206.508c-.294.329-1.373 1.45-1.373 1.45l-.536-.507zm1.075 1.02s1.051-1.1 1.394-1.456a1.282 1.282 0 01.318-.271.362.362 0 01.372.007.324.324 0 01.141.343 1.017 1.017 0 01-.272.423L7.202 9.191l-.56-.527zm9.676-3.489l.884-1.968.056-.175-.016.182.093 2.629c.31.029.631.072.946.124l-.142-3.892q-.663-.071-1.322-.1l-.871 2.148-.031.16-.031-.16-.87-2.148q-.66.028-1.321.1l-.144 3.9c.316-.052.636-.094.946-.124l.093-2.629-.016-.182.056.175.885 1.96h.805zm7.349 4.073c.217.231.53.6.706.832l3.237-2.04c-.162-.21-.419-.529-.612-.754l-2.05 1.346-.14.119.1-.151.905-1.794-.64-.636-1.807.9-.152.1.121-.139 1.356-2.035c-.239-.2-.468-.386-.76-.61L21.876 7.6c.26.2.6.491.822.69l1.934-1 .124-.091-.09.126-1 1.923z\"\n }))));\n}\nexport default SvgBmw;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgShell(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 31.228,\n height: 28.889,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26500\",\n d: \"M14.07 25.36H8.295l-.574-4.676-4.766-3.44a6.979 6.979 0 01-.221-1.677 6.279 6.279 0 01.574-2.691l8.425 8.511-8.16-10.1a6.6 6.6 0 012.029-3.4l7.319 12.659-6.48-13.794a6.662 6.662 0 013.352-2.346l4.5 15.7-3.265-16.364a6.545 6.545 0 013.265-.837 3.793 3.793 0 01.706.044l.662 16.982.662-16.982a3.793 3.793 0 01.706-.044 7.04 7.04 0 013.265.837l-3.266 16.373 4.5-15.746a6.662 6.662 0 013.352 2.337l-6.528 13.85 7.319-12.659a6.426 6.426 0 012.029 3.4l-8.16 10.1 8.424-8.511a6.28 6.28 0 01.574 2.691 7.286 7.286 0 01-.221 1.677l-4.766 3.44-.574 4.676h-5.726l-.882.618a1.154 1.154 0 01-.751.221 1.488 1.488 0 01-.751-.221l-.793-.618zm-.264 2.735h-7.94l-.706-5.866-4.851-3.484a14.789 14.789 0 01-.308-3.132 15.614 15.614 0 1131.227 0 14.789 14.789 0 01-.308 3.132l-4.809 3.484-.751 5.866h-7.939l-.446.352a2.213 2.213 0 01-1.362.441 2.519 2.519 0 01-1.362-.441l-.441-.352z\",\n fillRule: \"evenodd\"\n })));\n}\nexport default SvgShell;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgStanford(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 72,\n height: 32,\n fill: \"#fff\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26478\",\n d: \"M19.017 15.012a2.449 2.449 0 01-2.772-2.528 2.531 2.531 0 011.824-2.564c1.668-.611 2.028-.683 3.215-1.054v-.288a2.4 2.4 0 00-.132-1.054 1.7 1.7 0 00-1.752-1.1 2.108 2.108 0 00-1.92 1.186L17 7.322a3.146 3.146 0 013.251-2.109A2.968 2.968 0 0122.976 6.4a4.827 4.827 0 01.444 2.444c0 .815-.048 1.713-.048 2.444 0 .479-.048.946-.048 1.21 0 .659.132 1.186.66 1.186.24 0 .288-.084.48-.2l.288.371a2.394 2.394 0 01-2 1.186 1.471 1.471 0 01-1.476-.97 2.788 2.788 0 01-2.259.941zm2.268-4.972a10.352 10.352 0 00-2.076.767 1.524 1.524 0 00-.816 1.5 1.272 1.272 0 001.428 1.378 2.68 2.68 0 001.5-.443v-3.211h-.036zm-21.2 4.469c0-.946 0-1.749-.084-2.72h.576a1.824 1.824 0 00.444 1.342 3.241 3.241 0 002.2.731c1.788 0 2.64-.683 2.64-2.156 0-1.258-.768-1.785-1.824-2.528l-.156-.132-1.14-.767C1.157 7.225.341 6.41.341 4.745c0-.815.324-3.5 4.271-3.5a25.442 25.442 0 013.1.24c0 .132-.048.731-.048 1.258 0 .611 0 .767.048 1.5h-.48a1.8 1.8 0 00-.48-1.342 3.245 3.245 0 00-2.112-.575c-2.112 0-2.352 1.054-2.352 1.869 0 1.1.576 1.5 1.824 2.312l1.428.946c1.212.815 2.352 1.581 2.352 3.618 0 3.414-3.215 3.774-4.559 3.774a6.936 6.936 0 01-3.249-.337zm25.556-8.686a7.506 7.506 0 001.92-.132 5.394 5.394 0 001.26-.4l.2.132v.731a4.539 4.539 0 012.772-.9 2.864 2.864 0 013.131 2.24 10.472 10.472 0 01.132 1.713v2.768c0 1.545.084 2 .372 2.276a1.5 1.5 0 00.948.288v.443a37.822 37.822 0 00-2.352-.084c-.852 0-1.824.048-2.352.084v-.443a1.983 1.983 0 00.948-.323c.288-.288.324-.815.372-2 0-.371.048-1.1.048-1.629a18.929 18.929 0 00-.084-2.156 1.773 1.773 0 00-2-1.785 3.9 3.9 0 00-1.788.4v4.96c0 1.545.084 2 .372 2.276a1.566 1.566 0 00.9.288v.443a42.628 42.628 0 00-2.316-.084c-1.26 0-1.668.048-2.4.084v-.467a1.412 1.412 0 001.02-.4c.288-.323.324-1.138.324-2.72V8.611a4.323 4.323 0 00-.2-1.917c-.132-.2-.444-.371-1.1-.371V5.8h-.084v.024zm11.77 8.662a1.321 1.321 0 001.02-.4c.288-.323.324-1.138.324-2.72V6.633h-1.213v-.527a4.234 4.234 0 001.212-.659 17.391 17.391 0 01.156-2.528c.372-1.953 1.632-2.923 3.779-2.923a4.035 4.035 0 012.4.767l.048.2-.948 1.294h-.24a1.7 1.7 0 00-1.668-1.21 1.467 1.467 0 00-.948.323c-.4.4-.48 1.018-.48 2.24v1.821h2.112v1.186h-2.112v5.247a5.228 5.228 0 00.2 2.109c.24.4 1.1.443 1.5.443v.479a43.03 43.03 0 00-2.568-.084c-1.188 0-1.956.048-2.568.084l-.012-.419zm10.906.6c-2.88 0-4.6-1.785-4.6-4.792 0-2.348 1.26-5.08 4.8-5.08 2.88 0 4.6 1.785 4.6 4.792-.002 2.347-1.274 5.079-4.801 5.079zm.12-8.782a1.951 1.951 0 00-1.344.443c-.768.659-1.14 1.785-1.14 3.45 0 .659.132 3.822 2.448 3.822a1.951 1.951 0 001.344-.443c.768-.659 1.14-1.785 1.14-3.45-.013-.648-.121-3.825-2.449-3.825zm5.651-.527a9.652 9.652 0 002.076-.156 3.212 3.212 0 001.14-.323l.156.084v.815a3.089 3.089 0 012.2-.9 2.427 2.427 0 011.668.575v.288l-.816 1.474h-.4a1.918 1.918 0 00-2.6-.563v4.84a5.04 5.04 0 00.2 2.073c.24.4 1.056.443 1.5.4v.527a42.361 42.361 0 00-2.568-.084 24.709 24.709 0 00-2.568.084v-.479a1.372 1.372 0 001.02-.4c.288-.323.324-1.1.324-2.72V8.675c0-1.186 0-1.665-.2-1.917-.156-.2-.48-.323-1.1-.323v-.611l-.024-.048zm13.318-5.2A15.668 15.668 0 0069.65.288a9.572 9.572 0 001.02-.24l.156.084c-.084.767-.084 2.528-.084 3.774v7.715a6.107 6.107 0 00.156 2.109 1.314 1.314 0 001.1.371v.479a12.9 12.9 0 00-2.028.2 6.188 6.188 0 00-1.056.24l-.24-.084v-.815a4.3 4.3 0 01-2.64.9c-2.6 0-4.271-1.785-4.271-4.589a6.553 6.553 0 01.48-2.564 4.745 4.745 0 014.511-2.684 10.592 10.592 0 011.824.156v-2c0-1.186 0-1.785-.2-2.073-.132-.2-.324-.288-1.02-.323V.561h.042zm-.336 13.119a2.61 2.61 0 001.548-.371V7a2.577 2.577 0 00-1.872-.659c-1.824 0-2.724 1.258-2.724 3.87-.037 1.089.287 3.483 3.047 3.483zm-51.759.288a3.057 3.057 0 01-2.568 1.1c-1.476 0-2.28-.527-2.64-1.713a7.576 7.576 0 01-.156-1.917c0-1.5 0-2.72.048-4.145v-.659H8.723v-.371a5.04 5.04 0 001.188-.659 6.565 6.565 0 001.752-2.276h.4v2.109h3.215v1.186h-3.22v4.96c0 1.5.288 2.312 1.668 2.312a2.335 2.335 0 001.344-.371z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 26479\",\n d: \"M60.41 22.847a.745.745 0 00-.48.156.3.3 0 00-.132.288 2.007 2.007 0 00.156.611l.9 2.348c.132.371.24.659.288.851l1.1-3.211a1.6 1.6 0 00.156-.611.349.349 0 00-.132-.24.88.88 0 00-.48-.156v-.371a1.972 1.972 0 01.528.048c.132 0 .372.048.576.048.4 0 .972-.048 1.212-.048v.371c-.156.048-.528-.048-.852.9l-2.316 6.17c-.324.9-.768 2-2.352 2a2.085 2.085 0 01-1.476-.479v-.156l.576-.683h.156a.91.91 0 00.948.527c.732 0 1.056-.659 1.548-1.953l.132-.371-1.944-5.068a.664.664 0 00-.084-.2c-.048-.132-.156-.371-.156-.371a.593.593 0 00-.576-.323v-.371a13.051 13.051 0 001.344.048 5.844 5.844 0 00.852-.048c.156 0 .444-.048.576-.048v.323h-.048v.024zm-21.548-.084a4.5 4.5 0 001.3-.132 3.977 3.977 0 00.732-.2l.132.048v.527a1.9 1.9 0 011.38-.575 1.489 1.489 0 011.056.371v.2l-.48.946h-.24a1.044 1.044 0 00-1.02-.527 1.331 1.331 0 00-.66.2v3.055a3.6 3.6 0 00.132 1.342c.156.24.66.288.948.288v.323c-.4-.048-1.14-.048-1.632-.048a9.813 9.813 0 00-1.632.084v-.323a.994.994 0 00.66-.24c.2-.2.2-.683.2-1.749V24.64c0-.731 0-1.054-.132-1.21-.084-.132-.324-.2-.684-.2v-.443h-.06zm-27.091 5.894c-1.716 0-2.724-.527-3.1-1.665a5.849 5.849 0 01-.2-1.869v-3.247c0-.97-.048-1.138-.24-1.294a1.182 1.182 0 00-.576-.2v-.323c.4.048 1.1.084 1.5.084a8.191 8.191 0 001.548-.084v.371a.929.929 0 00-.66.24c-.2.2-.2.575-.2 1.629v2.875c0 1.713.156 2.815 2.076 2.815 1.956 0 2.076-1.138 2.076-2.875v-3.163c0-.97-.048-1.138-.24-1.294a1.672 1.672 0 00-.576-.2v-.323c.372 0 .852.048 1.344.048a8.65 8.65 0 001.428-.084v.371a.929.929 0 00-.66.24c-.2.2-.2.575-.2 1.629v2.444a7.327 7.327 0 01-.24 2.312c-.396 1.037-1.377 1.564-3.081 1.564zm11.6-.371a1.125 1.125 0 00.684-.24c.2-.2.2-.683.2-1.749v-1.713c0-.731 0-1.1-.132-1.258-.084-.132-.24-.2-.684-.24v-.371a5.82 5.82 0 001.38-.132 3.911 3.911 0 00.66-.2l.132.132c-.048.4-.048 1.258-.048 2.4v1.749a3.6 3.6 0 00.132 1.342.928.928 0 00.732.288v.288a13.2 13.2 0 00-1.476-.048c-.612 0-1.26.048-1.584.084v-.323zm1.5-6.949a.7.7 0 01-.768-.731.756.756 0 01.816-.767.7.7 0 01.768.731.75.75 0 01-.815.77zm24.224 6.949a1.125 1.125 0 00.684-.24c.2-.2.2-.683.2-1.749v-1.713c0-.731 0-1.1-.132-1.258-.084-.132-.24-.2-.684-.24v-.371a5.82 5.82 0 001.38-.132 2.882 2.882 0 00.66-.2l.132.132c-.048.4-.048 1.258-.048 2.4v1.749a3.6 3.6 0 00.132 1.342.928.928 0 00.732.288v.288a14.121 14.121 0 00-1.5-.048c-.612 0-1.26.048-1.584.084v-.323zm1.5-6.949a.7.7 0 01-.768-.731.756.756 0 01.816-.767.7.7 0 01.768.731.743.743 0 01-.815.77zm-6.431 7.033c0-.611-.048-1.258-.084-1.581h.4a1.108 1.108 0 00.24.767 1.2 1.2 0 001.056.4h.084c.66 0 1.02-.288 1.02-.851 0-.443-.288-.659-.768-.946l-.852-.527a1.742 1.742 0 01-.972-1.546 1.571 1.571 0 01.852-1.5 2.766 2.766 0 011.212-.2 10.583 10.583 0 011.584.156 3.743 3.743 0 00-.048.731 4.643 4.643 0 00.048.815h-.4a1.127 1.127 0 00-.24-.683 1.257 1.257 0 00-.972-.323c-.612 0-.948.24-.948.767 0 .4.324.611.612.815h.048l.816.479a1.939 1.939 0 011.212 1.665c0 1.581-1.476 1.821-2.316 1.821a4.935 4.935 0 01-1.583-.259zm12.778-.4a2.1 2.1 0 01-1.632.683c-.948 0-1.476-.323-1.668-1.1a5.755 5.755 0 01-.084-1.21v-3.031h-.816v-.24a4.162 4.162 0 00.768-.4 4.985 4.985 0 001.14-1.474h.288v1.342h2.028v.731h-2.028v3.169c0 .946.156 1.5 1.056 1.5a1.569 1.569 0 00.852-.24zm-27.523-5.451a2.538 2.538 0 00-.576.048c-.324 0-.66.048-.9.048-.444 0-1.1-.048-1.3-.048v.371a.586.586 0 01.612.371 1.919 1.919 0 01.156.371.517.517 0 01.084.2l1.956 4.876.612-.132 2.16-4.792c0-.048.048-.084.084-.156.048-.048.048-.132.2-.371a.732.732 0 01.612-.371v-.371c-.24 0-.768.048-1.188.048a2.689 2.689 0 01-.612-.048c-.156 0-.4-.048-.576-.048v.323a.811.811 0 01.48.156.431.431 0 01.132.24 2.656 2.656 0 01-.156.611l-1.188 2.875c-.048-.156-.132-.4-.24-.731l-.816-2.156a1.431 1.431 0 01-.156-.611c0-.084 0-.156.084-.2a.744.744 0 01.528-.2v-.323zm-13.294.24a3.991 3.991 0 001.212-.084 5.157 5.157 0 00.816-.24l.132.084v.479a2.91 2.91 0 011.752-.575 1.846 1.846 0 012 1.426 7.37 7.37 0 01.084 1.1v1.749c0 .97.048 1.258.24 1.474a.946.946 0 00.576.156v.288c-.4 0-1.1-.048-1.5-.048a14.611 14.611 0 00-1.5.084v-.288a1.889 1.889 0 00.612-.2c.156-.156.2-.527.24-1.258v-1.054a13.1 13.1 0 00-.048-1.378 1.122 1.122 0 00-1.26-1.138 2.7 2.7 0 00-1.14.24v3.187c0 .97.048 1.258.24 1.474a.946.946 0 00.576.156v.288a6.637 6.637 0 00-1.548-.132 6.977 6.977 0 00-1.5.084v-.288a.929.929 0 00.66-.24 3.734 3.734 0 00.2-1.749V24.64c0-.731 0-1.054-.132-1.21-.084-.132-.288-.24-.684-.2v-.455h-.036zm19.773 5.894c-1.824 0-2.82-1.054-2.82-2.971 0-.323.084-3.295 2.844-3.295a2.093 2.093 0 011.872.9 2.792 2.792 0 01.4 1.629v.371h-3.779a3.906 3.906 0 00.084.767 1.839 1.839 0 002 1.749 2.412 2.412 0 001.428-.371l.156.288a2.681 2.681 0 01-2.185.938zm-1.464-4.061h2.352c0-.731-.132-1.545-1.188-1.545-.923.052-1.115.926-1.163 1.549z\"\n })));\n}\nexport default SvgStanford;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgRaiffeisen(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 120.001,\n height: 32,\n fill: \"#fff\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 4519\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Subtraction 74\",\n d: \"M31.541 32H.001V.547h31.541v31.452zM.912 1.456v29.635h29.716V1.456z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.49 25.103l3.876 3.941 9.082-9.193 9.386 9.379 3.933-3.879-9.291-9.265 1.786-1.724v-3.678l1.121-.947v2.88l1.444 1.175 4.313-4.3 1.386 1.059c.817-3.012-3.914-9.852-7.828-6.063l-4.56 4.509.931 1.118-2.318 2.255-2.242-2.2 1.178-1.062-5-4.812c-3.762-3.089-7.619 1.611-7.752 6.2L3.303 9.36l4.2 4.51 1.5-1.25V9.851l.931.7v3.619l1.824 1.819-9.27 9.114zM39.595 4.317v2.729h1.179c1.615-.3 1.178-2.615 0-2.729zm-3.344-2.709v12.354h3.344V9.945l2.85 4.017h3.952l-3.515-4.945c4.066-1.971 2.546-7.352-1.729-7.409h-4.9zm15.465 6.176a1.93 1.93 0 011.994 1.857 1.99 1.99 0 01-3.97 0 1.926 1.926 0 011.976-1.857zm-.7-2.729a4.31 4.31 0 012.47.8v-.477h3.268l.019 8.583h-3.309l.019-.53a4.3 4.3 0 01-2.47.777 4.507 4.507 0 01-4.427-4.566 4.525 4.525 0 014.427-4.585zm7.486.322h3.472v8.583h-3.475V5.378zM60.247.471a1.838 1.838 0 11-1.843 1.837A1.838 1.838 0 0160.247.471zm26.391 4.908h3.477v8.583h-3.477V5.378zM88.366.471a1.838 1.838 0 11-1.824 1.838A1.842 1.842 0 0188.366.471zM62.622 5.378v2.729h1.2v5.855h3.363V8.107h3.154v5.855h3.477V8.069h2.158V5.416h-2.256V3.5c-.057-.7 1.6-.985 2.167-.417V.281c-3.192-1-5.776.8-5.757 3.581v1.516h-2.965V3.5c-.038-.7 1.407-.985 2.242-.417V.281c-2.774-.814-5.738.53-5.718 3.562v1.516l-1.064.019zm18.315 8.83c2.983-.019 4.084-1.25 4.731-3.051h-3.02a1.762 1.762 0 01-3.268-.947h6.384c0-3.486-1.863-5.135-4.826-5.135A4.557 4.557 0 0076.113 9.7a4.634 4.634 0 004.825 4.509zm-1.121-6.025c.038-1.043 2.318-1.043 2.47 0zm24.794 6.025c3-.019 4.1-1.25 4.75-3.051h-3.04a1.761 1.761 0 01-3.267-.947h6.384c0-3.486-1.843-5.135-4.826-5.135A4.556 4.556 0 0099.786 9.7a4.634 4.634 0 004.825 4.509zm-1.121-6.025c.038-1.043 2.318-1.043 2.47 0zm-4.615-2.634l-1.026 2.084c-1.292-.4-2.546-.322-2.508.037.038.227-.171.625 1.843.91 3 .473 2.755 6.044-2.28 5.627a7.652 7.652 0 01-3.439-1l1.121-2.236c1.577.777 3.1 1.232 3.211.455.133-.966-1.653-.625-2.736-1.44-1.938-1.194-.836-4.888 2.337-4.927a9.439 9.439 0 013.477.494zm11.894-.171v8.583h3.249V8.713c.095-1.307 2.679-1.535 2.7 0v5.249h3.286V8.58c-.076-3.012-3.249-4.472-6.118-2.558v-.644zM38.174 19.21l-2.17 12.733h6.137c4.161 0 5.871-5.153 2.907-6.916 2.527-2.331 1.235-5.836-1.482-5.874l-5.4.057zm2.489 7.6l-.437 2.1h1.425c1.615.076 1.425-2.1.494-2.1zm.722-4.566l-.361 1.706.437.018c1.311.076 2.071-1.724.494-1.724zm5.054 9.72h3.724l1.121-2.236h4.218L56.124 32h3.439L56.58 19.286h-3.515l-6.631 12.676zm6.061-4.908h2.314l-.74-3.356-1.577 3.354zM60.741 32h3.439l.873-7.977 4.921 7.939h3.686l1.539-12.753h-3.438l-.969 7.977-4.918-8.015h-3.556L60.741 32zm16.933-12.828l-2.413 12.79h3.629l.969-4.775 3.249 4.775h4.766l-4.655-6.708 5.947-6.1h-4.617l-4.066 4.509.646-4.509-3.458.019z\",\n fillRule: \"evenodd\"\n }))));\n}\nexport default SvgRaiffeisen;","import TwitterIcon from \"../../new_site/images/used_by_white/twitter.svg\";\nimport XIcon from \"../../new_site/images/used_by_white/x.svg\";\nimport AdidasIcon from \"../../new_site/images/used_by_white/adidas.svg\";\nimport InstagramIcon from \"../../new_site/images/used_by_white/instagram.svg\";\nimport InstagramIconLight from \"../../new_site/images/used_by_white/instagram_light.svg\";\nimport NikeIcon from \"../../new_site/images/used_by_white/nike.svg\";\nimport CocaColaIcon from \"../../new_site/images/used_by_white/coca-cola.svg\";\nimport UberlaIcon from \"../../new_site/images/used_by_white/uber.svg\";\nimport EtihadlaIcon from \"../../new_site/images/used_by_white/etihad.svg\";\nimport DdbIcon from \"../../new_site/images/used_by_white/ddb.svg\";\nimport PepsiIcon from \"../../new_site/images/used_by_white/pepsi.svg\";\nimport SnapIcon from \"../../new_site/images/used_by_white/snap.svg\";\nimport LinkedinIcon from \"../../new_site/images/used_by_white/linkedin.svg\";\nimport BmwIcon from \"../../new_site/images/used_by_white/bmw.svg\";\nimport ShellIcon from \"../../new_site/images/used_by_white/shell.svg\";\nimport StanfordIcon from \"../../new_site/images/used_by_white/stanford.svg\";\nimport RaiffeisenIcon from \"../../new_site/images/used_by_white/raiffeisen.svg\";\nimport SaatchiIcon from \"../../new_site/images/used_by_white/saatchi.svg\";\n//Roadmap images\nimport SafariRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/safari_extension.svg\";\nimport DocumentsRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/documents.svg\";\nimport TagsRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/tags.svg\";\nimport TrashRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/trash.svg\";\nimport BusinessRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/business.svg\";\nimport FamilyRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/family.svg\";\nimport SecureShareRoadMapIcon from \"../../new_site/images/pCloudPass/Pricing/secure-share.svg\";\n\nexport const colorLogos = [\n {\n retina: \"/images/used_by_color/twitter@2x.png\",\n image: \"/images/used_by_color/twitter.png\",\n },\n {\n retina: \"/images/used_by_color/adidas@2x.png\",\n image: \"/images/used_by_color/adidas.png\",\n },\n {\n retina: \"/images/used_by_color/instagram@2x.png\",\n image: \"/images/used_by_color/instagram.png\",\n },\n {\n retina: \"/images/used_by_color/nike@2x.png\",\n image: \"/images/used_by_color/nike.png\",\n },\n {\n retina: \"/images/used_by_color/coca-cola@2x.png\",\n image: \"/images/used_by_color/coca-cola.png\",\n },\n {\n retina: \"/images/used_by_color/uber@2x.png\",\n image: \"/images/used_by_color/uber.png\",\n },\n {\n retina: \"/images/used_by_color/etihad@2x.png\",\n image: \"/images/used_by_color/etihad.png\",\n },\n {\n retina: \"/images/used_by_color/ddb@2x.png\",\n image: \"/images/used_by_color/ddb.png\",\n },\n {\n retina: \"/images/used_by_color/pepsi@2x.png\",\n image: \"/images/used_by_color/pepsi.png\",\n },\n {\n retina: \"/images/used_by_color/snapchat@2x.png\",\n image: \"/images/used_by_color/snapchat.png\",\n },\n {\n retina: \"/images/used_by_color/linkedin@2x.png\",\n image: \"/images/used_by_color/linkedin.png\",\n },\n {\n retina: \"/images/used_by_color/bmw@2x.png\",\n image: \"/images/used_by_color/bmw.png\",\n },\n {\n retina: \"/images/used_by_color/shell@2x.png\",\n image: \"/images/used_by_color/shell.png\",\n },\n {\n retina: \"/images/used_by_color/stanford@2x.png\",\n image: \"/images/used_by_color/stanford.png\",\n },\n {\n retina: \"/images/used_by_color/raiffaisen@2x.png\",\n image: \"/images/used_by_color/raiffaisen.png\",\n },\n {\n retina: \"/images/used_by_color/saatchi@2x.png\",\n image: \"/images/used_by_color/saatchi.png\",\n },\n]\n\nexport const customLogos = [\n {\n image: XIcon,\n },\n {\n image: AdidasIcon,\n },\n {\n image: InstagramIcon,\n },\n {\n image: NikeIcon,\n },\n {\n image: CocaColaIcon,\n },\n {\n image: UberlaIcon,\n },\n {\n image: EtihadlaIcon,\n },\n {\n image: DdbIcon,\n },\n {\n image: PepsiIcon,\n },\n {\n image: SnapIcon,\n },\n {\n image: LinkedinIcon,\n },\n {\n image: BmwIcon,\n },\n {\n image: ShellIcon,\n },\n {\n image: StanfordIcon,\n },\n {\n image: RaiffeisenIcon,\n },\n {\n image: SaatchiIcon,\n },\n];\n\nexport const barLogos = [\n {\n image: InstagramIconLight,\n },\n {\n image: NikeIcon,\n },\n {\n image: CocaColaIcon,\n },\n {\n image: XIcon,\n },\n {\n image: UberlaIcon,\n },\n {\n image: AdidasIcon,\n },\n {\n image: PepsiIcon,\n },\n {\n image: DdbIcon,\n },\n {\n image: RaiffeisenIcon,\n },\n {\n image: SnapIcon,\n },\n {\n image: StanfordIcon,\n },\n {\n image: ShellIcon,\n },\n {\n image: EtihadlaIcon,\n },\n {\n image: BmwIcon,\n },\n {\n image: LinkedinIcon,\n }\n];\n\nexport const darkLogos = [\n {\n retina: \"/images/used_by_dark/twitter@2x.png\",\n image: \"/images/used_by_dark/twitter.png\",\n },\n {\n retina: \"/images/used_by_dark/adidas@2x.png\",\n image: \"/images/used_by_dark/adidas.png\",\n },\n {\n retina: \"/images/used_by_dark/instagram@2x.png\",\n image: \"/images/used_by_dark/instagram.png\",\n },\n {\n retina: \"/images/used_by_dark/nike@2x.png\",\n image: \"/images/used_by_dark/nike.png\",\n },\n {\n retina: \"/images/used_by_dark/coca-cola@2x.png\",\n image: \"/images/used_by_dark/coca-cola.png\",\n },\n {\n retina: \"/images/used_by_dark/uber@2x.png\",\n image: \"/images/used_by_dark/uber.png\",\n },\n {\n retina: \"/images/used_by_dark/etihad@2x.png\",\n image: \"/images/used_by_dark/etihad.png\",\n },\n {\n retina: \"/images/used_by_dark/ddb@2x.png\",\n image: \"/images/used_by_dark/ddb.png\",\n },\n {\n retina: \"/images/used_by_dark/pepsi@2x.png\",\n image: \"/images/used_by_dark/pepsi.png\",\n },\n {\n retina: \"/images/used_by_dark/snap@2x.png\",\n image: \"/images/used_by_dark/snap.png\",\n },\n {\n retina: \"/images/used_by_dark/linkedin@2x.png\",\n image: \"/images/used_by_dark/linkedin.png\",\n },\n {\n retina: \"/images/used_by_dark/bmw@2x.png\",\n image: \"/images/used_by_dark/bmw.png\",\n },\n {\n retina: \"/images/used_by_dark/shell@2x.png\",\n image: \"/images/used_by_dark/shell.png\",\n },\n {\n retina: \"/images/used_by_dark/stanford@2x.png\",\n image: \"/images/used_by_dark/stanford.png\",\n },\n {\n retina: \"/images/used_by_dark/raiffeisen@2x.png\",\n image: \"/images/used_by_dark/raiffeisen.png\",\n },\n {\n retina: \"/images/used_by_dark/saatchi@2x.png\",\n image: \"/images/used_by_dark/saatchi.png\",\n },\n]\n\nexport const roadmap = [\n // \"en\": [\n {\n title: \"roadmap_ppass_head_bin\",\n icon: TrashRoadMapIcon,\n description: \"roadmap_ppass_body_bin\"\n },\n { \n title: \"roadmap_ppass_head_image\",\n icon: DocumentsRoadMapIcon,\n description: \"roadmap_ppass_body_image\"\n },\n { \n title: \"roadmap_ppass_head_business\",\n icon: BusinessRoadMapIcon,\n description: \"roadmap_ppass_body_business\"\n }\n // ]\n ];\n\nexport const testimonials = {\n \"en\": [\n {\n title: \"Alan MacLeod\",\n href: \"https://www.trustpilot.com/users/61853559afe9fd00120b259e\",\n quote: \"Very happy with pCloud\",\n text: \"I've been using pCloud for a number of years, first as a free user, now as a lifetime, 2TB user. I use Windows, Mac, Linux (both GUI and CLI), and Android clients and all have been excellent. Knowing my data is secure and transparently accessible for all of the OSes I use are must-have features for me.\",\n },\n {\n title: \"Éamonn Herlihy\",\n href: \"https://www.trustpilot.com/users/588e45130000ff000a71a038\",\n quote: \"In praise of pCloud\",\n text: \"I was attracted both by the many features of their service and also because, at the time, they were one of the few providers offering a lifetime enrolment option. I have never regretted my decision. Based on my personal experience, I would have absolutely no hesitation in recommending them to anyone needing good, reliable, online storage of important files and equally reliable support whenever needed.\",\n },\n {\n title: \"François Gouin\",\n href: \"https://www.trustpilot.com/reviews/61968094f23cf7242d9c4d70\",\n quote: \"2 years on PCloud and would not change.\",\n text: \"Cheap, efficient and the custumer service is really great and quick to answer. One lifetime fee and you have one of the best could on the market.\",\n },\n {\n title: \"Danny B.\",\n quote: \"\\\"pCloud is the All-Around Best Cloud File Sharing/Backup Service!\\\"\",\n text: \"I share folders with clients. With pCloud, they don't need an account and the amount of space I have (4 TBs) is the only thing affected by any folder I share with them.Also, it's usable across my Windows, Android, and iOS devices. I can see all my saved files no matter what device I'm using.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4928733\"\n },\n {\n title: \"Tessa B.\",\n quote: \"\\\"pCloud keeping our business documents in line and our team on the same page.\\\"\",\n text: \"The fact that it updates as soon as you drop something in to the pCloud and instantly everyone with access can see what you're seeing. It's a great way to stay organized on any computer from anywhere. It's easy to organize as your team has full control of how you want to set up your pCloud system. And you can easily share a link to the pCloud with others who may not have access but you want them to see a certain folder of assets or videos.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4706011\"\n },\n {\n title: \"Travis J.\",\n quote: \"\\\"Better solution than Google Drive.\\\"\",\n text: \"It's like google drive but easier to use - easier to send people \\\"upload links\\\" and share folders between people.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-5098225\"\n },\n {\n title: \"Julia P.\",\n quote: \"\\\"Accessing files was never this easy\\\"\",\n text: \"pCloud works very robustly to create a place to store all my files. My favorite feature from this software is the synchronization tool, as I can access my files from multiple devices.I also like that pCloud is very easy to use, as a team and as a singular employee, since it’s easy to access folders that are related to the project I’m working on at the moment, and work faster since I have access to the files. The access features are amazing, and always as customizable as possible, with multiple options of sharing, and with options to customize what users can see and modify.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4227210\"\n },\n {\n title: \"Amit B.\",\n quote: \"\\\"The Best Cloud Service Available with Lifetime Deal\\\"\",\n text: \"- Ease of use- Exceptional customer support- Smooth syncing of data- A public folder that enables you to share files and folders with others- End to end encryption- Another layer of encryption\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4259164\"\n },\n {\n title: \"Dustin S.\",\n quote: \"\\\"The best storage in the cloud!\\\"\",\n text: \"Due to its simple interface, it can use your data in the cloud as if saved on your local hard disk, but without taking space. With PCloud, you can create download and load connections, which can provide anyone for sharing files, is simple to use, simply submit an invite through mail and once users approve your invitation, can use their files in compliance with permissions granted them, you can filter your files via their formats.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3885958\"\n },\n {\n title: \"Nelkis V.\",\n quote: \"\\\"Security and encryption, speed, and excellent price. That is pCloud.\\\"\",\n text: \"In the case of pCloud, it is a modern, simple, and secure tool. pCloud offers a series of features that allow it to stand out from many of its competitors. Offers compatible options with; Windows, Mac, Linux, iOS and Android, also has a website.The communication between the pCloud platform and the users' devices is encrypted. It also has functions to share information with friends and colleagues, through links, where they are granted permission to edit or just view the information, among other security aspects.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3155572\"\n },\n {\n title: \"L. Somasundaram\",\n quote: \"pCloud is a really fantastic…\",\n text: \"pCloud is a really fantastic product/service. It is so easy and intuitive to use. My productivity has improved greatly since I bought the 500 GB lifetime plan. I recently bought another 2 TB. I would like to commend the great customer service. pCloud is way ahead of its competitors. It is expensive but it is definitely worth it. Thanks pCloud!\",\n href: \"https://www.trustpilot.com/users/618cf9abc99e8c0012516383\"\n },\n {\n title: \"Earl Brown\",\n quote: \"Wonderful operation and so easy to use\",\n text: \"Wonderful operation and so easy to use. I like their site format and their excellent customer support. I've got all my stuff stored with them so I can rest easy knowing if my house burns down I still have all my stuff on a secure storage site!\",\n href: \"https://www.trustpilot.com/users/617481a106f68c0012b33b97\"\n },\n {\n title: \"Ed, USA\",\n quote: \"pCloud Knows How to Communicate\",\n text: \"I recently learned about pcloud, downloaded a trial and liked the features. I had some questions about plans and additional capabilities causing me to reach out to their support on two occasions via email.\\n\\nI received a prompt reply on both occasions. In particular, Andrey provided personal, clear, and helpful answers and follow up that addressed my remaining questions, resulting in my purchase.\\n\\nI help technical people to improve their communication skills and appreciate a company that puts a capable technologist and communicator upfront to help consumers. Powerful combination. Kudos pcloud, keep up the good work.\",\n href: \"https://www.trustpilot.com/users/619cda89547f870012d8f625\"\n },\n {\n title: \"François Gouin, Canada\",\n quote: \"2 years on PCloud and would not change.\",\n text: \"Cheap, efficient and the custumer service is really great and quick to answer. One lifetime fee and you have one of the best could on the market\",\n href: \"https://www.trustpilot.com/reviews/61968094f23cf7242d9c4d70\"\n },\n {\n title: \"J.Michael Palka\",\n quote: \"pCloud Drive is Awesome!\",\n text: \"PCloud Drive is something I had wished for, for a long time. Then I discovered it. WOW! I really needed to move a large amount of files (hundreds of GBs) off my harddrive as it was getting full. And the \\\"BEST\\\" solution is pCloud Drive. It is a virtual drive that sits on my desktop and I can just drop folders/files into it. But at all times I can open the drive and see what is there without logging in to some site. I can download any files I might need again. It has a function if you delete a file it is saved in trash for 30 days or you can purchase the function to have it save your deletes for 1 year. Simple, Easy, Effective and Productive.\",\n href: \"https://www.trustpilot.com/users/5bb2cf3c4de5666d34246ecc\"\n },\n {\n title: \"Martin, Germany\",\n quote: \"Recommended!\",\n text: \"I have been using pCloud for about 6 months for my business. It was vital for us to find a partner in Europe, due to GDPR reasons. pCloud has not disappointed and I have been very happy with it from day one.\\n\\nThe customer service is great and consistent (always the same contact person), the menus are intuitive, and it offers a safe and simple way to manage your data - also across systems (Linux, Mac, Windows).\\n\\nThe Crypto option, ensuring extra encryption and safety for important documents, also works very well and is easy to manage.\\n\\nThe shared user/team access could be a bit more intuitive for new users, but once you get the hang of it these options are also easy to manage. I highly recommend pCloud!\",\n href: \"https://www.trustpilot.com/users/615da0591c8cd100128e37a0\"\n },\n {\n title: \"Zereshk, Austria\",\n quote: \"Fast, easy and reliable! Great service.\",\n text: \"I am very well satisfied!\\nWindows and Linux drive clients install fast and work like a charm.\\nSame is true for Android. I can share all necessary files fast, easily and without any hassle.\\nInterfaces are clear and for anyone with some experience in devices and computers very easy to use. Support is responsive, fast and reliable.\",\n href: \"https://www.trustpilot.com/users/6138959854b3900013bee03d\"\n },\n {\n title: \"Egor U.\",\n quote: \"\\\"Just what I was looking for!\\\"\",\n text: \"The pCloud lets you synch, backup, store files with en ease. You get your virtual drive in the Finder and it acts like another folder on your computer. You can purchase military-grade encryption for the Crypto folder. The file synch between you your computer and pCloud online account is SUPER fast! Almost as fast as my Mac! It doesn't feel like cloud storage at all! Has a great iPhone app and a built-in scanner!I now removed Dropbox, Google drives, OneDrive from my Mac, backed them up with pCloud, and doing so also made my RAM usage much less now!\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-5239585\"\n },\n {\n title: \"Tricia B.\",\n quote: \"\\\"Pcloud Is Saving Me From Needing to Upgrade my 2014 Computer!\\\"\",\n text: \"The vast amount of storage room is greatly appreciated! I store all my images, files, and videos with room to spare & I've been using PCloud for years. PCloud was by far the best price for the massive amount of storage offered. I also like the easy file sharing feature!\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-5144244\"\n },\n {\n title: \"Kimberly B.\",\n quote: \"\\\"So much storage!!!\\\"\",\n text: \"I like that PCloud gives plenty of storage. I needed more storage for my photos and videos that students submitted after events, and I knew that a cloud solution would work best. When I found PCloud, I liked that there was a tiered system for storage levels because it is like a competition to get higher and higher tiers. First, I used different email accounts to get higher level tiers so that I could have more storage space. Then, I used the link feature to share the link with all of my students. They uploaded photos and videos from a leadership retreat we took, and I still use those photos for marketing and social media for showing off student involvement.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4705488\"\n },\n {\n title: \"Vince C.\",\n quote: \"\\\"pCloud is a better alternative to DropBox\\\"\",\n text: \"Pcloud is very simple to use. It has an excellent UX that is clear and simple. The system generates links for sharing but it also generates short links. You can also set passwords and blocks on links.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4822995\"\n },\n {\n title: \"User in Non-Profit Organization\",\n quote: \"\\\"Peace of Mind, stay for ever\\\"\",\n text: \"Very reliable cloud storage, you paid the space you need life time and can upgarde when you need.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4868094\"\n },\n {\n title: \"Yasmina E.\",\n quote: \"\\\"Best tool for save and share\\\"\",\n text: \"I like it because you can share it with your team by email, and you can find what they have saved for you!\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4705590\"\n },\n {\n title: \"Lucas G.\",\n quote: \"\\\"Good to improve organization\\\"\",\n text: \"pCloud offers a thousand tools to get started with cloud storage. I think the thing I like most is the multiple sharing options that come with this software, as it allows me to decide whether I want to share files with coworkers or not. It's also a software that comes with organization tools, and everyone in the team can have their own folder that can be personalized according to their work. It's also worth mentioning that pCloud offers a wide accessibility to the cloud in multiple devices, making it easier for our team to share files during work hours, through any device and with the same effectiveness.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-4011019\"\n },\n {\n title: \"Ana A.\",\n quote: \"\\\"This tool is very useful to securely backup\\\"\",\n text: \"The best choice to back up all the necessary cloud records has the free option from which we are able to try the service forever and get 20 GB of storage hastes, It has customers for Windows, Linux and Mac, Ios, iPhone and soon Blackberry and Windows Phone. And its unique feature is backup data on online social networks. PCloud provides various and enticing possibilities, including something which users have always been very concerned about: great security.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3934457\"\n },\n {\n title: \"Bruno D.\",\n quote: \"\\\"pCloud, amazing way to save files in the cloud\\\"\",\n text: \"pCloud allows me to share download links, also provide great security when managing files that are stored in the cloud, also offers an accessible payment plan, has a digital asset management that is very useful, the great advantage of this Software is that you can easily save important files and documents, pCloud also offers an easy-to-use interface, you can also add pCloud as a hard drive that is displayed on my computer.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3478013\"\n },\n {\n title: \"Daichi K.\",\n quote: \"\\\"Store your files securely and easily through the cloud.\\\"\",\n text: \"pCloud Drive is a desktop application that allows us to have a secure virtual drive on our computer, which we can use to easily store, access and work with our files through the cloud. With this smart desktop application it allows us to work with our files as if we were on our computer, but without taking up space on the local disk. It works as a virtual drive, which can expand the available space on the device with up to 2TB.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3820456\"\n },\n {\n title: \"Ana María A.\",\n quote: \"\\\"Easily store all your files in the Pcloud cloud.\\\"\",\n text: \"Today there are many companies that offer collaborative document editing and storage services in the cloud, however, there is one company that offers the best service at the best price, and that is Pcloud. With Pcloud you can store any document regardless of the format in the cloud, in turn you can edit documents simultaneously, this option is ideal for work teams and offices that require changing documents between several workers. Thanks to this software I can save documents in the cloud, and from my office computer, or my smartphone I can review and edit different documents and thus fulfill my work assignments. Pcloud's security is one of the most unbreakable that exists today, and unlike most cloud storage software that offers 1TB of storage, Pcloud offers 2TB of storage. Pcloud is a software that as time goes by is perfected and giving its customers a quality service.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3022550\"\n },\n {\n title: \"Miguel Alberto Z\",\n quote: \"\\\"The best option for storing information in the cloud. \\\"\",\n text: \"Backing up the information issued by our company is one of the most important tasks I have as a programmer in the company where I work. To achieve this I use several software, but, the most important of this group of software I use is PCLOUD, since its characteristics of information storage in the cloud, with great support for multiple types of file formats, its security, expressed in two-step authentication codes and encryption of the information you host in the cloud, and its extensions to link files hosted in social network accounts and emails make it one of the most competitive software currently on the market. Quickly and easily you can create your session in Pcloud, and start using this software with 10 gb free, or paid version, where you will have various plans, including 500 gb and 2 tb. The customer service is at your disposal 24 hours a day, and always answer any questions or problems that arise when using this software\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-2955439\"\n },\n {\n title: \"Emre Demir\",\n quote: \"Good service for reasonable pricing!\",\n text: \"I have been using pcloud for over a year and overall I am very happy with their service and support.\\nEven after reading all the bad reviews, I start to appreciate more and more what pcloud is providing as a service to all of its users.\\nLike a Lifetime package for couple of hundred bucks? I don't trust it by myself and rather pay year after year. Gives me a better feeling and I will keep pcloud supporting to maintain the apps et cetera. The support is fast in general and until today, I never experienced any major issue like data loss or something else.\\nI have used MEGA, Google Drive, One Drive and Dropbox before and as a IT-business owner I honestly believe pcloud is doing good. They provide a lot of features that others don't have like link branding.\\nFor all the bad reviewers: Don't cry too much. You guys even get offered full refund after months which no company does and still write a bad review. This is really childish and low for an adult to do.\\nTo pCloud: I am very happy with everything and thanks for everything until now. Hope to stay with you guys for couple of years more!\",\n href: \"https://www.trustpilot.com/users/6200b900a1f7570012f3f41b\"\n },\n {\n title: \"Peter Bogert\",\n quote: \"Best of the Bunch for Cloud Services\",\n text: \"I've used four or five other services over the years, including the more popular ones, and pCloud beats them all. One service cost a mint, another has privacy concerns, and a third ended up ruining some documents and making them unreadable. pCloud allows me to simply sync my home MacBook Air to my office Mac mini so that I have all my documents in both places when I need them. No problems at all after a several months of use.\",\n href: \"https://www.trustpilot.com/users/61fc5e5af3524900120737ed\"\n },\n {\n title: \"Alrasheed or Virginia\",\n quote: \"I've always had great experiences with…\",\n text: \"I've always had great experiences with using pCloud as cloud technology storage for my study. The most fascinating thing is, last week, I had strong feeling that this file called Volume System Information was a virus and I decided to delete my account. But I had to contact pCloud Team to explain what this file does because I'm suspicious about it and I need some answers. One of the great pCloud team members her name Sherry, so her clarification and elucidation gave me peace more than ever. As you know these days there are so many malicious activities but I like the way how pCloud works. It has comprehensive security layers that prevent from accessing the account such as two factors authentications. And also you can logout of your pCloud drive in your pc as to keep your data safe.\",\n href: \"https://www.trustpilot.com/users/61fbb82de2c7c20012680852\"\n },\n {\n title: \"Inconnu\",\n quote: \"Pcloud is well working on OS\",\n text: \"Pcloud is well working on many OS I have been using for many weeks including linux, Windows and Android.\",\n href: \"https://www.trustpilot.com/users/61aad22fd70d4700125e5985\"\n },\n {\n title: \"Arend Melissant\",\n quote: \"I have tried many cloud storage…\",\n text: \"I have tried many cloud storage providers, but pcloud is by far the best. Fast, reliable, very good software, cost effective, I could go on and on\\nI use it on Windows, and the ease of using the P drive is so much better than anything the competetion has to offer, try it, I'm sure you will not regret it.\",\n href: \"https://www.trustpilot.com/users/61f83a73afedc20013d849f7\"\n },\n {\n title: \"Andrew\",\n quote: \"I wanted to transfer away from Google…\",\n text: \"I wanted to transfer away from Google Drive, due to Google having access to all my files and costing 12 euro a month!\\n\\nI took a lifetime family subscription with pCloud and could not to be happier. I have had no need at all to contact support, everything just works great on ios/android/windows 10.\\n\\nThe automatic photo upload works just fine on both ios and android. I was able to share folders just fine.\\n\\nPersonally I don't trust the Sync feature. I am sure its fine, but I use a free tool \\\"FreeFileSync\\\" instead so I can see what will be synced.\\n\\nGreat product. Thank you very much!\",\n href: \"https://www.trustpilot.com/users/61f7fa40cd80d90012fa77cf\"\n },\n {\n title: \"Jerome B.\",\n quote: \"Very satisfied for my use.\",\n text: \"I have been a customer of pCloud since 2018. I purchased the 500GB lifetime licence, which I upgraded to 2TB in 2021. Since I purchased the bigger package, I guess you can work out that things have been going well for me.\\nMy usage is pretty basic: just backup of my personal data on my home PC: photos, vidéos, software installers, Microsoft office files etc.\\nI do share occasionally folders with friends, and the process is pretty easy.\\nI wanted a \\\"permanent personal folder\\\" online, so I do not have to pay a yearly subscription like Dropbox etc. I mean for the price of 3 years subscription with Dropbox, you get lifetime with pCloud.\\n(I do use Dropbox too, but my work pays for it).\\nI do not use the crypto folder etc, as I do not really have use for it.\\nI have never had any issue with the product, so I cannot comment on customer support.\",\n href: \"https://www.trustpilot.com/users/53f6118b000064000185f9bd\"\n },\n {\n title: \"LONGLIVEWISDOM\",\n quote: \"pCloud Rocks!!\",\n text: \"Thank you pCloud. I am a pCloud user and very happy with the service provided. I have lots of lifetime storage and use it to store photos and videos which I capture from my Samsung Galaxy Smartphone, photos of flowers, animals, places and people :-).\\nThe truth is a reliable cloud storage provider is always better than simply buying an external storage. The amount of functionality and usability along with reliability and security is unmatched.\\nAnd in this regard pCloud is second to none. In my experience. pCloud is the best cloud storage provider one can buy. Really. The merits are too many to count. Almost everything about pCloud is good, all aspects are fully covered and well executed.\\nI would recommend to try it out first and then gradually subscribe to monthly, then yearly, and as per your need you can even subscribe to lifetime storage options.\\nI don't use it for collaboration or anything of that sort but for personal use only. pCloud overall, considering security, functionality, privacy and quality of service and support is better than all other providers including OneDrive, Google Drive, Dropbox and so on. pCloud is what a cloud storage service should be like.\\nNow I am thinking to buy pCloud crypto, to store my marks sheets and Government IDs although pCloud is already so secure I am not sure if that is needed at all. pCloud own all their servers.\\n\\nThank you pCloud, and thanks for reading,\\nAll the best,\\nWisdom (My virtual name as a good privacy practice)\",\n href: \"https://www.trustpilot.com/users/5e22d61e616781259d837ef2\"\n },\n {\n title: \"Mirko Schieder\",\n quote: \"Excellent and very responsive supportllent\",\n text: \"Quick to respond. And very open to suggestion.\\nA pleasure\",\n href: \"https://www.trustpilot.com/users/61af76413b28030012ca4c37\"\n },\n {\n title: \"Per Asbeck\",\n quote: \"Pcloud good product and good support\",\n text: \"Pcloud has very good products. I have a 2TB/life time now. Until recently I used a free plan for years that work well too.\\nI have experienced very goos support when I accdently got the wrong product. So very happy with company\",\n href: \"https://www.trustpilot.com/users/543395cb00006400018ea96c\"\n },\n {\n title: \"Vineet Singhal\",\n quote: \"Very supportive organization\",\n text: \"Very supportive organization with an excellent product and a wonderful customer service\",\n href: \"https://www.trustpilot.com/users/61aa8eaf34258d00125ad715\"\n },\n {\n title: \"Narek Musakhanyan\",\n quote: \"Just bought 2TB on the Black Friday…\",\n text: \"Just bought 2TB on the Black Friday sale\\nAmazed at the features they provide and how useful and convenient it is, especially requesting files and file/folder sharing.\",\n href: \"https://www.trustpilot.com/reviews/61a63d2861218815444e7a46\"\n },\n {\n title: \"Olivier Lebreton\",\n quote: \"Very efficient and reactive support\",\n text: \"Very efficient and reactive support\\nAfter a problem from my fault, Pcloud support was very reactive and efficient to resolve my error.\\nIn few minutes, after only 2 mails, all was ok, it was perfect.\",\n href: \"https://www.trustpilot.com/reviews/61a634c861218815444e6cda\"\n },\n {\n title: \"Mohammed Ali\",\n quote: \"amazing\",\n text: \"reliable service, awesome speed and good price. bought 2TB lifetime on this black friday.\",\n href: \"https://www.trustpilot.com/reviews/61a3f8a6bd63dda48268127a\"\n },\n {\n title: \"Etam\",\n quote: \"This is a an excellent and all supported product.\",\n text: \"This is a great product. I keep adding terabytes because it solves so many problems to have the cloud storage right there on the desktop.\",\n href: \"https://www.trustpilot.com/users/61a130d631cc4f00126c2ae0\"\n },\n {\n title: \"Nihar Behera\",\n quote: \"Very happy with the purchase\",\n text: \"Very happy with the purchase, Felix from the support team highly recommended, Felix answered all the queries and help with 4TB lifetime storage plan purchase.\",\n href: \"https://www.trustpilot.com/users/5cf7e61bd27f4d80c781be59\"\n },\n {\n title: \"George\",\n quote: \"Fantastic Customer Service!\",\n text: \"I am new to pCloud and am impressed with both the customer service and the pCloud drive functionality. Regarding the customer service, I accidentally purchased the wrong plan and wrote to pCloud to try to resolve it. I received a reply almost immediately and the customer service representative was friendly, helpful, and helped me get the plan I wanted. He even followed up to make sure everything was working as expected. As far as my experience with the pCloud drive goes, I am very happy with how easy it is to use. I have a mac, and it works just like any other local drive, so take no time to get right to work. I was mostly impressed with how fast it was when I worked with a large file in photoshop stored on the drive. While I have not been using pCloud very long, I am quite impressed so far and would recommend it to my friends.\",\n href: \"https://www.trustpilot.com/users/61a0be684d9eb7001264db09\"\n },\n {\n title: \"Pavel Lordov\",\n quote: \"I use pcloud for 3 months\",\n text: \"I use pcloud for 3 months. I like it all. Especially I can view file in pcloud area. And also I want to say about speed load files on pcloud, wery fast working. I recommend.\",\n href: \"https://www.trustpilot.com/users/619d4de0516fc90012477e6e\"\n },\n {\n title: \"François Gouin\",\n quote: \"2 years on PCloud and would not change.\",\n text: \"Cheap, efficient and the custumer service is really great and quick to answer. One lifetime fee and you have one of the best could on the market\",\n href: \"https://www.trustpilot.com/users/5da7c70c501cc23d25af2aec\"\n },\n {\n title: \"L. Somasundaram\",\n quote: \"pCloud is a really fantastic…\",\n text: \"pCloud is a really fantastic product/service. It is so easy and intuitive to use. My productivity has improved greatly since I bought the 500 GB lifetime plan. I recently bought another 2 TB. I would like to commend the great customer service. pCloud is way ahead of its competitors. It is expensive but it is definitely worth it. Thanks pCloud!\",\n href: \"https://www.trustpilot.com/users/618cf9abc99e8c0012516383\"\n },\n {\n title: \"Earl Brown\",\n quote: \"Wonderful operation and so easy to use\",\n text: \"Wonderful operation and so easy to use. I like their site format and their excellent customer support. I've got all my stuff stored with them so I can rest easy knowing if my house burns down I still have all my stuff on a secure storage site!\",\n href: \"https://www.trustpilot.com/users/617481a106f68c0012b33b97\"\n },\n {\n title: \"Victor\",\n quote: \"Always with customer oriented mind\",\n text: \"pCloud not only provides a reliable and secured cloud storage services, but also work anything to solve my problem. When I tell them I cannot download their app from my App Store, they provide apk file in their website. As I explain to them I have difficulty in payment for premium service, their staff acts quickly to provide an alternative method to facilitate my settlement. They always have customer oriented mind. Wonderful work!\",\n href: \"https://www.trustpilot.com/review/pcloud.com?page=2&stars=5\"\n },\n {\n title: \"J.Michael Palka\",\n quote: \"pCloud Drive is Awesome!\",\n text: \"PCloud Drive is something I had wished for, for a long time. Then I discovered it. WOW! I really needed to move a large amount of files (hundreds of GBs) off my harddrive as it was getting full. And the \\\"BEST\\\" solution is pCloud Drive. It is a virtual drive that sits on my desktop and I can just drop folders/files into it. But at all times I can open the drive and see what is there without logging in to some site. I can download any files I might need again. It has a function if you delete a file it is saved in trash for 30 days or you can purchase the function to have it save your deletes for 1 year. And there are other addons depending on your neeeds. Simple, Easy, Effective, Productive. When it comes to my files there are now 3 apps I cannot do without and pCloud Drive is one of them. Once you try it (there is a free version to try it out) you will embrace it as one of your priority apps. Now go check it out immediately.\",\n href: \"https://www.trustpilot.com/users/5bb2cf3c4de5666d34246ecc\"\n },\n {\n title: \"Praveen Gautam\",\n quote: \"Recommend using it\",\n text: \"pCloud is the best cloud service ever. I've started using it recently I got to know about it from ayusanimation youtube\\n\\nIts clearly better than any other cloud service\\nTheir application takes the lowest amount of RAM and works well\\nLastly I can sync my minecraft world :)\",\n href: \"https://www.trustpilot.com/users/61685155cae80900131d4247\"\n }\n ],\n \"fr\": [\n {\n title: \"Olivier\",\n href: \"https://www.trustpilot.com/reviews/612374626e38167b798df0e4\",\n quote: \"Un outil facile d'utilisation !\",\n text: \"Un outil facile d'utilisation. Chaque demande, qu'elle soit avant ou après vente, est traitée et la réponse pertinente. Juste simple et top !\",\n },\n {\n title: \"Mr. Joachim Debarge\",\n href: \"https://fr.trustpilot.com/users/56a1cfeb0000ff0001feb8cf\",\n quote: \"Pour moi, le meilleur produit en rapport qualité/prix\",\n text: \"Le meilleur rapport qualité/prix que j'ai trouvé jusqu'à maintenant.De manière globale, je suis très content de ce service. Personnellement je recommande.\",\n },\n {\n title: \"Alain\",\n href: \"https://www.trustpilot.com/users/60dc359c15e6f90011161377\",\n quote: \"Excellente réactivité support pcloud pour paramétrage région\",\n text: \"J'ai fait l'acquisition de la version pCloud lifetime pour la sauvegarde de mes fichiers.\",\n },\n {\n title: \"JMR\",\n quote: \"Enfin, un cloud sérieux et efficace !\",\n text: \"Bonjour,\\nAprès quelques temps de test, j’ai finalement opté pour un forfait payant.\\nAyant contacté le service client pour diverses informations, je peux confirmer que le service est très réactif et que la personne ayant géré mon dossier a été très courtoise et efficace.\\nCe cloud me semble très pratique et très intuitif.\\nUn véritable plus pour sauvegarder son ordinateur, et cerise sur le gâteau, il est accessible depuis une tablette ou un smartphone.\\nLa synchronisation est hyper rapide.\\nEnfin, les données sont hébergées en Europe, ce qui est rassurant côté confidentialité.\\nDonc, selon moi, la réputation de pCloud est amplement méritée.\\nMerci aux développeurs.\\nBien cordialement.\\nJMR\",\n href: \"https://www.trustpilot.com/users/62004e98eb4e5a00120c652e\"\n },\n {\n title: \"Pascal\",\n quote: \"Nouvel adhérent - Content\",\n text: \"Nouvel adhérent, je suis très content du suivi qui a été donné à mon dossier lorsque j'ai rencontré des difficultés de connexion. Réactivité et excellents conseils, j'ai apprécié et je recommande vivement.\",\n href: \"https://fr.trustpilot.com/users/61928c71d2f5a70012deab95\"\n },\n {\n title: \"Gerard\",\n quote: \"Le sav est très réactif\",\n text: \"Le sav est très réactif, le produit fonctionne correctement et de façon fiable.\\nPour ces raisons je recommande ce fournisseur.\",\n href: \"https://fr.trustpilot.com/users/55e4408f0000ff0001d812b9\"\n },\n {\n title: \"Denis\",\n quote: \"Service en tous points performant et de…\",\n text: \"Service en tous points performant et de bonne qualité. Très bon rapport qualité/prix. Le service client est au rendez-vous. Aucun problème pour avoir un retour rapide à nos questions.\\nLes débits sont très corrects et la disponibilité très bonne.\\nJe conseille vraiment.\",\n href: \"https://www.trustpilot.com/users/61f9a90ff74ca800120d5680\"\n },\n {\n title: \"Alain Chappuis\",\n quote: \"Super stockage rapide\",\n text: \"Hello,\\nvoilà je suis un utilisateur depuis presque un an avec pCloud. Serte j'ai eu des problèmes de synchronisation qui se sont réglés par l'intermédiaire du SAV par email, j'ai utilisé leur logiciel de mise au point pour voir ou le problème était présent. Après une mise à jour de la version pCloud, tout fonctionne.\\nJe travaille entre deux pays; la Suisse et la France avec deux FAI différents, j'ai toujours sous la main une copie exacte de tous mes fichiers que j'ai décider de partager dans leur espace, ce qui est vraiment super. J'ai pris un ABT à vie de 500Go ce qui me suffit pour le volume de mes données, j'ai énormément de programmes PHP puis des photos. Les délais de récupération des données et très rapides, sauf pour la France ou j'ai que 5000bps mais ça fonctionne.\\nDonc en règle générale, je recommande vivement pCloud pour avoir ses fichiers sous la main avec PC, téléphone portable, tablette.\\nBonne journée à tous!\",\n href: \"https://www.trustpilot.com/users/5bfe78845483f4b8a967cb87\"\n },\n {\n title: \"Soufian\",\n quote: \"Great support\",\n text: \"Super Cloud avec un service apres vente excelent et reatif\",\n href: \"https://www.trustpilot.com/users/61f2bb9cb41a7e0013a98547\"\n },\n {\n title: \"Erik\",\n quote: \"très bon service après vente\",\n text: \"très bon service après vente, même les fin de semaine ils m'ont répondu rapidement.\\nPour moi, le transfert est bien soit à 250 Ko/ sec. mon serveur est au USA.\",\n href: \"https://www.trustpilot.com/users/61e728139637ea0012d58e8b\"\n },\n {\n title: \"Ludovic\",\n quote: \"Au top\",\n text: \"Au top.\\nMerci pour votre patience.\\nAu bout de quelques jours le problème est résolu.\\nContinuez comme ça.\",\n href: \"https://www.trustpilot.com/users/61e5406a4eeecd0012a64f3d\"\n },\n {\n title: \"Casa Davy\",\n quote: \"Au top l'équipe..\",\n text: \"Au top l'équipe...\\nSav niquel et rapide\",\n href: \"https://www.trustpilot.com/users/61e19a7b65c2820013acead2\"\n },\n {\n title: \"Jerome Goralczyk\",\n quote: \"PCloud est une excellente solution…\",\n text: \"PCloud est une excellente solution alternative aux autres solutions Cloud moins regardantes sur le respect de la vie privée que j'utilise depuis 1 an. Avec des fonctionnalités qui n'ont rien à envier à ces derniers ! J'ai eu recours à l'assistance suite à une évolution vers Big Sur. J'ai pu avoir une réponse rapide et permettre à PCloud de tourner sous mon nouvel environnement Mac. Merci à l'équipe et bonne continuation pour la suite.\",\n href: \"https://www.trustpilot.com/users/5c607a2bdd5dea15cd650218\"\n },\n {\n title: \"Bellier Didier\",\n quote: \"Très bonne expérience et rapport…\",\n text: \"Très bonne expérience et rapport qualité prix excellent. Sauvegarde en temps réel, restauration très rapide, synchronisation de plusieurs postes en miroir, le tout sécurisé et un service Crypto pour y mettre ses fichiers sensibles. De plus, les photos de mon téléphone sont automatiquement sauvegardées dans un répertoire dédié sur Pcloud, et je peux transférer des fichiers de mon téléphone vers mon PC et vice et versa. Les mises à jour et améliorations sont régulières. Je test ce service depuis plusieurs mois et ai finalement pris un abonnement à vie. Je suis pleinement satisfait !\",\n href: \"https://www.trustpilot.com/users/5edb502238d5460851f0a9c3\"\n },\n {\n title: \"Denis Cazaux\",\n quote: \"J'étais un peu méfiant en rejoignant…\",\n text: \"J'étais un peu méfiant en rejoignant PCloud... j'avais des doutes sur la fiabilité dans le temps... et au bout de 4 ans de pratique je ne peux que me réjouir de faire partie de votre famille...\\nJe ne suis pas un expert en informatique et l'usage de Pcloud est accessible à tout le monde...\\nJe résiste encore pour augmenter mes parts chez Pcloud ... mais jusqu'à quand ? Denis Cazaux\",\n href: \"https://www.trustpilot.com/users/61d7641ee79b5b0012be0a1e\"\n },\n {\n title: \"Henrion Yannis\",\n quote: \"Excellent service le meilleur du Net\",\n text: \"Excellent service le meilleur du Net\\nDe vrais professionnels et d’une correction à toute épreuve\",\n href: \"https://www.trustpilot.com/users/600e0e0e6bf5d70019ed3509\"\n },\n {\n title: \"Yves Guillermo Serpo\",\n quote: \"Professionnel !\",\n text: \"J'ai eu un pb après la mise à jour 'une version et mon pcloud avait disparu sur un de mes ordinateurs ... impossible de réinstaller, toujours un code erreur, je tournais en rond ... le SAV m'a répondu rapidement, on a travaillé sur plusieurs pistes, et enfin on a réglé le pb ! Ils ont été très professionnels, sympas et rassurants, avec en prime des conseils en français ! Bref, je recommande\",\n href: \"https://www.trustpilot.com/users/5c6d4df858082a4baaf7b1a0\"\n },\n {\n title: \"Camille Ferrari\",\n quote: \"Support technique très réactif et…\",\n text: \"Support technique très réactif et soucieux de résoudre les problèmes rencontrés. Bonne communication et bon suivi. Merci pour votre implication et la qualité des vos réponses.\",\n href: \"https://www.trustpilot.com/users/61cb155cddbd960012ad6f7a\"\n },\n {\n title: \"Vincent\",\n quote: \"Gestion des données respectant la vie…\",\n text: \"Gestion des données respectant la vie privée et le droit européen. Bande passante fluide et une offre « à vie » très intéressante\",\n href: \"https://www.trustpilot.com/users/61ca3396c3cd0800125aa7e6\"\n },\n {\n title: \"Pierre\",\n quote: \"Pb de synchronisation\",\n text: \"J'ai contacté le support suite à un problème de synchronisation. Réponse très rapide et très précise. Plusieurs échanges dans la journée jusqu'à la résolution de mon problème. C'est top. Merci\",\n href: \"https://www.trustpilot.com/reviews/61ba2c739f60695a25f5d5cc\"\n },\n {\n title: \"Cedric A.\",\n quote: \"Excellent produit\",\n text: \"Excellent produit, tres fiable et flexible. Un support client qui repond tres rapidement, a l'ecoute et efficace.\\nJe suis utilisateur pCloud depuis maintenant 2 ans et je confirme en etre totalement satisfait.\",\n href: \"https://www.trustpilot.com/reviews/61b855b40b7cbbcbfe0bdf00\"\n },\n {\n title: \"Stéphane\",\n quote: \"Un SAV à l'écoute et actif pour aider au mieux\",\n text: \"Lorsque j'ai eu un problème avec une fonction de pCloud, j'ai eu recours au SAV qui à posé des questions pertinentes et qui m'a proposé des solutions pour résoudre le problème. Au final le problème s'est réglé de lui-même avant l'intervention du SAV. Bref, je suis très satisfait de mon échange, tout comme pCloud en général !\",\n href: \"https://www.trustpilot.com/users/61561119f7f9fc0012da1803\"\n },\n {\n title: \"Nogueira Jean-Louis\",\n quote: \"It’s a very good product\",\n text: \"C’est un très bon produit. L’équipe de support est très efficace et compétente. Je ne regrette pas mon choix d’utiliser ce produit.\",\n href: \"https://www.trustpilot.com/users/6192ab12b1ff8300121a8088\"\n },\n {\n title: \"Christian M.\",\n quote: \"Excellent SAV\",\n text: \"Excellent SAV, très bonne communication, professionnalisme des développeurs… suite à une mauvaise manipulation de ma part - une suppression pour ainsi dire - le problème a rapidement été résolu et mes données récupérées. Je ne peux dès lors que féliciter de tout cœur, toute l’équipe de pCloud qui pendant presque une semaine a travaillé pour récupérer mes données; qui plus est pour une faute commise par négligence par moi-même.\\nJe tiens également à exprimer toute ma gratitude à Pauline, la personne qui a échangé par mail avec moi pendant cette semaine, pour son calme et professionnalisme; cela va de soi que je garderai un très bon souvenir.\\nÀ l’approche des fêtes de fin d’année, je souhaite à toute l’équipe pCloud, de très joyeuses fêtes et une merveilleuse année prochaine pleine de succès.\",\n href: \"https://www.trustpilot.com/users/61acf66bfbeadc00129087bb\"\n },\n {\n title: \"Joseph PIERQUIN\",\n quote: \"Simple & intuitif\",\n text: \"Les interfaces (web & applicative Windows) sont très simples et très intuitives, de quoi vous convaincre définitivement de pas utiliser un NAS chez soi.\\n\\nPas mal de fonctionnalités intéressantes (sauvegarde réseaux sociaux, partage de fichiers/screenshot, espace public etc.) et simple d'utilisation.\\n\\nSupport client par e-mail réactif au final (quand l'email fonctionne - un tchat serait un plus).\\n\\nL'investissement \\\"Lifetime\\\" est normalement vite rentabilisé lorsque l'on compare à la concurrence.\\n\\nDeux points clé à bien comprendre optimiser vos copies: la différence entre pCloud Drive et pCloud Sync et la gestion du cache.\",\n href: \"https://www.trustpilot.com/users/5cd82999083ba95384b4a8a3\"\n },\n {\n title: \"Keneda\",\n quote: \"Ravis des services et du SAV!\",\n text: \"Nous sommes ravis de l'utilisation de Pcloud depuis 2018. Cela nous permet de synchroniser nos travaux au sein d'une petite équipe, c'est vraiment génial et partager des fichiers lourds avec qui nous le souhaitons. Les rares fois où un problème est survenu (arrêt des synchronisations) nous avons reçu une réponse immédiate, en Français, dans un langage compréhensible ce qui n'est pas pour déplaire. Les réponses ont été rapides jusqu'à trouver la solution et résoudre le problème. Pour les familles et les télétravailleurs de petites structures associatives, c'est parfait!\",\n href: \"https://www.trustpilot.com/users/61a543e996193b0012cfe4b3\"\n },\n {\n title: \"Bertrand Barcat\",\n quote: \"Il est un peu tôt pour moi pour évaluer…\",\n text: \"Il est un peu tôt pour moi pour évaluer l'entièreté du service fourni par pCloud car j'ai opté récemment pour pCloud payant. Utilisateur jusqu'alors de Dropbox pour la synchro entre appareils et de Backblaze pour la sauvegarde je peux d'ores et déjà faire le retour suivant :\\n– Sauvegarde efficace et facile à utiliser ;\\n– Pour la synchro et l'utilisation de fichiers et dossiers sur plusieurs ordis, j'ai eu beaucoup plus de mal à comprendre comment faire ;\\n– Mes premiers jours ont été pollués par de très nombreux bugs de mon ordi principal et de pCloud, probablement augmentés par le fait que j'avais toujours une sauvegarde Backblaze active ;\\n– J'ai attendu que toutes mes données soient sauvegardées pour contacter le support, qui a répondu quelques heures plus tard par mail : les instructions étaient simples, bien rédigées et tout est rentré dans l'ordre instantanément, tant du côté de pCloud, qui fonctionne maintenant fluidement, que du côté de mon ordi principal, qui ne bugge plus.\\nJe suis très satisfait.\",\n href: \"https://www.trustpilot.com/users/61a215b1e4fd2d0012f9c0f0\"\n },\n {\n title: \"Mr. Joachim Debarge\",\n quote: \"Pour moi, le meilleur produit en rapport qualité/prix\",\n text: \"Le meilleur rapport qualité/prix que j'ai trouvé jusqu'à maintenant.\\nJ'ai eu dernièrement un problème suite à une réinitialisation de mon PC. Le support a été très réactif, courtois et très clair dans les explications. De manière globale, je suis très content de ce service.\\nPersonnellement je recommande ++\",\n href: \"https://www.trustpilot.com/users/56a1cfeb0000ff0001feb8cf\"\n },\n {\n title: \"Françoise de Domont\",\n quote: \"Satisfaction totale\",\n text: \"Bonjour, j'avais un problème de blocage par mon ordi pour ré-ouvrir le lien que mon fils m'avait envoyé pour voir ses photos. Ce problème a été pris \\\"immédiatement\\\" en charge par vos services, plusieurs contacts toujours positifs et vous m'avez donné la solution = je remercie la rapidité des réponses et la cordialité des messages. MERCI+++ Cordialement\",\n href: \"https://www.trustpilot.com/users/4f4e2f0900006400011513c7\"\n },\n {\n title: \"Jean Picq\",\n quote: \"Cloud performant et SAV réactif\",\n text: \"J'utilise pCloud depuis plus d'un an et j'en suis très content. Un souci de synchronisation cette semaine. Le SAV a été très réactif (malgré le fait que je sois encore en version gratuite) et leur réponse m'a permis de régler le problème rapidement. Aucune donnée perdue. Merci !\",\n href: \"https://www.trustpilot.com/users/618ccfd2b5ebaf0012d3d6e7\"\n },\n {\n title: \"Dominique N\",\n quote: \"Pratique et confortable\",\n text: \"Après 6 mois d'utilisation je suis plus que ravi. J'ai mes données partout ou je vais et plus de souci de sauvegarde. Convivial et bien pensé. Indispensable.\",\n href: \"https://www.trustpilot.com/users/51bd799f00006400013ff762\"\n },\n {\n title: \"Blanes Isabelle\",\n quote: \"Professionnels\",\n text: \"Une bonne écoute, rapides pour la réponse, professionnels, je suis plus que satisfaite du produit et du SAV, je recommande Pcloud souvent, et je recommencerai!\\nMerci!\",\n href: \"https://www.trustpilot.com/users/5b5b1a594de5666d343cb3c9\"\n },\n {\n title: \"Gerard\",\n quote: \"Le sav est très réactif\",\n text: \"Le sav est très réactif, le produit fonctionne correctement et de façon fiable.\\nPour ces raisons je recommande ce fournisseur.\",\n href: \"https://www.trustpilot.com/users/55e4408f0000ff0001d812b9\"\n },\n {\n title: \"Jean-Michel\",\n quote: \"Très satisfait sur tous les aspects\",\n text: \"J'utilise tous les jours mon espace pCloud avec grande satisfaction. Mes données sont toujours disponibles et les outils d'accès efficaces. Le SAV est hyper réactif et très courtois, ce qui est très très appréciable. Je ne regrette pas du tout l'investissement initial pour l'achat de mon espace plutôt que la location mensuelle des autres fournisseurs.\\nContinuez ainsi !\",\n href: \"https://www.trustpilot.com/users/615c575be400e200121e6531\"\n },\n {\n title: \"Silvia Stagnaro\",\n quote: \"Extrême courtoisie e soin\",\n text: \"Grâce à l'extrême courtoisie, au soin et à l'efficacité du support pcloud, j'ai pu surmonter les difficultés liées au paiement d'un produit, dues au blocage de la carte de crédit en raison de la législation anti-fraude italienne... vraiment merci beaucoup\",\n href: \"https://www.trustpilot.com/users/614c607f9ac9e700120bb2fa\"\n },\n {\n title: \"Dominique Orecchioni\",\n quote: \"J'utilise pcloud depuis plusieur et je…\",\n text: \"J'utilise pcloud depuis plusieur et je m'en félicite tous les jours. Quand il y a eu quelques problèmes j'ai eu un contact efficace et de grande qualité car les solutions sont arrivées rapidement.\\nDès lors je recommande ce logiciel à mon entourage mes amis ma famille je n'ai que des retours positifs. J'espère que tout va continuer sur cette ligne là en tout cas c'est ce que je souhaite.\",\n href: \"https://www.trustpilot.com/users/6143df09abbb0f0012dbb793\"\n },\n {\n title: \"Blanc\",\n quote: \"Rien a dire a part que c esf un super…\",\n text: \"Rien a dire a part que c esf un super produit.\\nJamais eu besoin du sav!!\",\n href: \"https://www.trustpilot.com/users/613a22fa8b60e5001215ad57\"\n },\n {\n title: \"Olivier\",\n quote: \"Un outil facile d'utilisation !\",\n text: \"Un outil facile d'utilisation. Chaque demande, qu'elle soit avant ou après vente, est traitée et la réponse pertinente.\\nJuste simple et top !\",\n href: \"https://www.trustpilot.com/reviews/612374626e38167b798df0e4\"\n },\n {\n title: \"Claude Gobez\",\n quote: \"Un pc pCloud la mise en service sans…\",\n text: \"Un pc pCloud la mise en service sans problème.\\nun deuxième pc avec la même adresse mail et le même mot de passe que le premier pc. Le deuxième pc pas reconnu.\\nPourtant dans les explications cela devait fonctionné.\\nAprès une demande en fin de soirée au service technique. Le lendemain matin les deux pc était OK.\\nRapide, efficace, sans demande divers qui font perdre du temps et parfois trop technique pour amateur informatique.\\nMerci à l'équipe technique\",\n href: \"https://www.trustpilot.com/users/610a9538d393de0012ea45e0\"\n },\n {\n title: \"FootSkiLLs\",\n quote: \"Meilleur plateform Cloud Photos !!! 10/10\",\n text: \"L'application est TOP , beaucoup de possibilité, on voit que l’équipe cherche toujours à l’amélioré et aussi a écouter les clients avec leur support qui est super réactif.\\n\\nJe recommande les yeux fermé\",\n href: \"https://www.trustpilot.com/users/60f7b08e5380fe0012a2c7c5\"\n },\n {\n title: \"Julchris Wzk\",\n quote: \"Service et Assistance au top!\",\n text: \"Service et Assistance au top!\\n\\nLe fonctionnement est très simple et j'ai pu très facilement réaliser les sauvegardes que je souhaitais.\\nJ'ai également eu ) faire avec le service technique pour un petit soucis qui a été d'une très grande efficacité!!\",\n href: \"https://www.trustpilot.com/users/60f6779e90d8e0001127fd1d\"\n },\n {\n title: \"Eric Jomtien, Thailand\",\n quote: \"Prix incroyable et synchro hyper rapide...\",\n text: \"j ai acheté la license à vie 500 GO après un petit essai gratuit...et je me suis décidé d'abandonner Google drive... la synchro avec Pcloud est bien plus rapide que la synchro de google drive...et google drive est à 20 euros par an pour seulement 100 GO... Cette idée d abonnement à vie est vraiment incroyable... en espérant que Pcloud ne fermera pas dans quelques années pour cause de faillite... becoz si tout le monde prend l abonnement à vie, je sais pas comment ils vont avoir assez de rentrée d argent chaque année pour l entretien des serveurs... mais bon, longue vie à Pcloud!!! et merci pour votre offre :)\",\n href: \"https://www.trustpilot.com/users/60ed9680c841470011cbd86b\"\n },\n {\n title: \"Romain Habouzit\",\n quote: \"Des fonctionnalités et une prestation globale exemplaire et sûr. BRAVO !\",\n text: \"Plusieurs mails envoyés au support pCloud sur plusieurs jours, des réponses rapides et efficaces à chaque fois pour solutionner plusieurs problèmes différents. Les réponses sont claires, précises, ciblées sur la demande et surtout accessibles.\\nPCloud est aujourd'hui l'un des meilleurs prestataires de Cloud par les fonctionnalités de son service et la sécurité apportées au transit et stockage des données, et l'un des meilleurs par son support client.\\nJe recommande fortement pCloud et suis très satisfait par sa prestation d'une manière globale.\",\n href: \"https://www.trustpilot.com/users/60e40e7269b57a00114a981a\"\n },\n {\n title: \"Julien Bouchard\",\n quote: \"Excellent même avec une version gratuite\",\n text: \"Même avec une version gratuite, leur SAV est tout simplement excellent !\",\n href: \"https://www.trustpilot.com/users/60d46a16edb34f0014bc8b4a\"\n },\n {\n title: \"Jérôme Lesur\",\n quote: \"pCloud sans doute le meilleur service…\",\n text: \"pCloud sans doute le meilleur service du marché.\\nSimple, efficace et sécurisé.\\nTrès bon service client, personnalisé et qui répond même le dimanche !\\nA recommander +++\",\n href: \"https://www.trustpilot.com/users/60866c9409d2ea001985e9c4\"\n },\n {\n title: \"Clément\",\n quote: \"Le produit fonctionne très bien et le…\",\n text: \"Le produit fonctionne très bien et le service client est réactif et sympathique.\",\n href: \"https://www.trustpilot.com/users/606d72040f5ae6001bea3962\"\n },\n {\n title: \"Laurline\",\n quote: \"Tout était parfait\",\n text: \"Tout était parfait, ma demande a été très rapidement traitée, ce moyen d'avoir un espace de stockage sur soi sans qu'il prenne de place sur le pc, est vraiment pratique. Merci! Laurline.\",\n href: \"https://www.trustpilot.com/users/6050f9180e9601001ab477cf\"\n },\n {\n title: \"Rémy T.\",\n quote: \"Un service de qualité\",\n text: \"Bonjour,\\n\\nSuite à un comparatif, j'ai découvert pCloud.\\nTout indiqué que l'on s'intéresse à lui.\\nPersonnellement, j'en suis ravi et même très content.\\n+ Accès aux données à l'identique d'un lecteur interne\\n+ Capacité de stockage en ligne 2To\\n+ Paiement à vie (99ans)\\n+ Cross plateformes\\n- Sur Android, je ne trouve pas l'application encore très intuitif...merci viendra avec le temps\\n\\nMerci au SAV, très agréable et très réactif\\nN'hésitez surtout pas 😉\",\n href: \"https://www.trustpilot.com/users/603dd4f74de76c001a19a93b\"\n },\n {\n title: \"Frédéric\",\n quote: \"j'utilise pcloud depuis quelques années…\",\n text: \"j'utilise pcloud depuis quelques années (licence à vie 2 To+crypto)\\nj'en suis satisfait et je l'ai recommandé à mes clients dont certains ont un abonnement à vie\\nje n'ai eu recours qu'une fois au service clients (pour rapatriement de mes données en Europe) et le nécessaire a été fait\\nje n'ai qu'un seul souci : avoir la certitude de la permanence du service pcloud au fil des années\",\n href: \"https://www.trustpilot.com/users/602688eafc7261001a7a8b6c\"\n },\n {\n title: \"Aristide\",\n quote: \"Excellent service...\",\n text: \"Excellent service, disponibilité maximale, rien à redire. Je recommande sans hésitation !!!! Juste Top!!!\",\n href: \"https://www.trustpilot.com/reviews/601da9e7679d9708d82712e0\"\n },\n {\n title: \"Olivier\",\n quote: \"Retour d'expérience\",\n text: \"Après plusieurs déboires avec dropbox (données supprimées intempestivement par eux, sans espoir de les récupérer), j'utilise maintenant pCloud depuis plus d'un an sur plusieurs postes et je suis TRÉS satisfait de ce service.\\nL'utilisation est simple, complète et transparente.\\nL'aide est complète et claire\",\n href: \"https://www.trustpilot.com/users/60195eebcd1f21001ae54334\"\n },\n {\n title: \"M Brice Ducruix\",\n quote: \"Je recommande\",\n text: \"Je recommande. Cloud provenant d'une société suisse et bon rapport qualité-prix surtout lors de l'achat à vie. Petit bémol, il y a une demande à faire afin que les fichiers soient stockés en Europe et non aux États-Unis par défaut.\",\n href: \"https://www.trustpilot.com/users/5b1853c64de5666d345510d3\"\n }\n ],\n \"de\": [\n {\n title: \"Harald Heinisch\",\n href: \"https://de.trustpilot.com/users/6192ce68badf6d0013a21fbc\",\n quote: \"Alles was man braucht!!\",\n text: \"Vertrauenswürdiger Cloudspeicher aus der Schweiz, somit viel empfehlenswerter puncto Datenschutz als die ganzen amerikanischen Anbieter!\",\n },\n {\n title: \"Michael O.\",\n href: \"https://www.trustpilot.com/users/61a3d661b9f9f50012b3986d\",\n quote: \"Attraktive Preise und schneller Support\",\n text: \"pCloud lockt mit attraktiven Preisen bei den Lifetime-Angeboten. Bisher läuft die Technik zuverlässig. Der Support reagiert sehr schnell und antwortet innerhalb weniger Stunden. Sehr vorteilhaft ist, dass pCloud ein Schweizer Unternehmen ist und die Daten in der EU gehostet werden können.\",\n },\n {\n title: \"Yoko\",\n href: \"https://de.trustpilot.com/users/5c07acd1b37e1f6b229a2ba5\",\n quote: \"Ausgezeichnete Cluod, guter Service\",\n text: \"Lebenslanges Konto ist ja schon was außergewöhnliches! Habe in der Zwischenzeit meine Daten synchronisiert um mir das Leben mit der Datensicherung leichter zu machen. Bis jetzt ist alles Ausgezeichnet. pCloud kann ich momentan sehr empfehlen.\",\n },\n {\n title: \"Wolfgang Siebeck, Thailand\",\n quote: \"Hervorragender Support\",\n text: \"Seit Anfang 2019 bin ich zufriedener Nutzer von Pcloud. Der Service ist unschlagbar. Die Unterstützung von den verschiedensten Plattformen ist genial, ich nutze Pcloud unter Linux, Android und Windows zur vollsten Zufriedenheit.\",\n href: \"https://de.trustpilot.com/users/60f59bb333ff06001154846c\"\n },\n {\n title: \"Viktor Bajenov, Deutschland\",\n quote: \"Mega gut\",\n text: \"Sehr stabile, sichere App, freundliche, selbsterklärende Benutzeroberfläche, sehr gute, nette Service. Danke!\",\n href: \"https://de.trustpilot.com/users/605ceb69a42b24001a4d1e8f\"\n },\n {\n title: \"Dietmar K.\",\n quote: \"Toller Support und bester Service\",\n text: \"Toller Support und bester Service, sehr kundenfreundlich. Vorbildlich !!!\",\n href: \"https://www.trustpilot.com/users/5b4cf99f4de5666d3445e9c3\"\n },\n {\n title: \"Joseph\",\n quote: \"Sehr guter Cloudspeicher\",\n text: \"Seid einigen Jahren verwende ich pCloud um von verschiedenen Geräten auf meine Daten zugreifen zu können. Ich verwende Linux Mint, MacOS und IOS. Seid kurzem verwende ich die Backupfunktion von pCloud. Die Synchronisation erfolgt immer schnell und zuverlässig.\\nVor kurzem benötigte ich technische Unterstützung von pCloud. Die Antwortzeit per E-Mail erfolgte innerhalb von 24 Stunden. Die Hilfsmaßnahmen waren ausführlich beschrieben und waren sofort erfolgreich.\",\n href: \"https://www.trustpilot.com/users/5d85e63a07d952c267f783f8\"\n },\n {\n title: \"Saskia John\",\n quote: \"Sehr schnelle und hilfreiche Antwort…\",\n text: \"Sehr schnelle und hilfreiche Antwort auf meine Fragen! Das ist super und ich empfehle pCloud sehr gerne weiter.\",\n href: \"https://www.trustpilot.com/users/5f3a6d0b37f3e885d4639d7a\"\n },\n {\n title: \"Daniel Hä\",\n quote: \"Super und vor allem sehr schneller…\",\n text: \"Super und vor allem sehr schneller Service. Kann ich nur empfehlen. Meine Daten sind und bleiben sicher gespeichert.\",\n href: \"https://www.trustpilot.com/users/6157106b5880c30012e731c3\"\n },\n {\n title: \"André Pahud\",\n quote: \"Ein Support, wie man ihn sich wünscht\",\n text: \"Problem: Zugriff auf Daten auf war nicht mehr möglich, somit potenzieller Datenverlust befürchtet.\\nLösung: Dank rascher und effektiver Unterstützung funktioniert das Backup nun wieder einwandfrei. Sehr gute Erfahrung mit dem zuvorkommenden und hilfreichen Support gemacht.\",\n href: \"https://www.trustpilot.com/users/610cd33b80d5610012782e20\"\n },\n {\n title: \"Man Farang\",\n quote: \"ich bin SEHR zufrieden...\",\n text: \"ich kann mich nur meinem Vorredner Wolfgang Siebeck (der mich für pcloud geworben hat :-)) anschließen:\\nich bin SEHR zufrieden mit meinem LifeTime Abo...\\nAndroid, Windows, Linux...\",\n href: \"https://www.trustpilot.com/users/61000fcc5c510000121a39a1\"\n },\n {\n title: \"Rupert Mohr\",\n quote: \"Seit geraumer Zeit benutze ich pCloud…\",\n text: \"Seit geraumer Zeit benutze ich pCloud zu meiner vollen Zufriedenheit. Das Fehlen merkwürdiger Einschränkungen, die Unterstützung der unterschiedlichen Betriebssystem, der übersichtliche Aufbau des Dateisystems, sowie die verschiedenen Möglichkeiten die Daten zu speichern (Synchronisierung oder Cloud) macht pCloud flexibel. Erweiterung ist kostengünstig möglich und habe ich natürlich gerne wahrgenommen.\",\n href: \"https://www.trustpilot.com/users/60ffc675f54aad0012de91e7\"\n },\n {\n title: \"Wolfgang Siebeck\",\n quote: \"Hervorragender Support\",\n text: \"Seit Anfang 2019 bin ich zufriedener Nutzer von Pcloud. Der Service ist unschlagbar, anfangs gab es kleine Probleme bei Softwareupdates, aber der Support konnte sehr schnell helfen. Die Unterstützung von den verschiedensten Plattformen ist genial, ich nutze Pcloud unter Linux, Android und Windows zur vollsten Zufriedenheit.\",\n href: \"https://www.trustpilot.com/users/60f59bb333ff06001154846c\"\n },\n {\n title: \"Theo Noetzli\",\n quote: \"kunde wird ernst genommen\",\n text: \"schnelle, sehr detaillierte antworten, man hat sich engagiert um mein problem gekümmert und verschiedene gangbare lösungswege vorgeschlagen. freundliche und der situation angepasste korrekte wortwahl. ich hatte über die ganze problemlösungsperiode eine einzige person als ansprechpartner und nicht jedesmal jemand anders. der kunde wird ernst genommen.\",\n href: \"https://www.trustpilot.com/users/570fdd940000ff000a1774da\"\n },\n {\n title: \"C. H.\",\n quote: \"Ganz toller Support!!!\",\n text: \"Ganz toller Support. Ich war sehr zufrieden mit der Lösung und der Hartnäckigkeit vom Support-Team! Ich kann pCloud nur empfehlen.\\n\\nNach diversen anderen Clouds, mit denen ich nicht zufrieden war, fühle ich mich endlich gut aufgehoben :-)\",\n href: \"https://www.trustpilot.com/users/58402b5d0000ff000a5cedc1\"\n },\n {\n title: \"Erich\",\n quote: \"Bin sehr zufrieden.\",\n text: \"Ich bin nach den ersten Tagen der Nutzung von pCloud sehr zufrieden. Würde sogar sagen, begeistert.\\n\\nDer Plan, mein Archiv - grosse Fotomengen - in die Cloud zu legen ist voll aufgegangen. Technisch gab es überhaupt keine Probleme. Auch mit grösseren Datenmengen. Ich habe noch etliche GB-Daten die ich transferieren werde.\\n\\nAber auch sensible Daten habe ich hochgeladen und mittels dem angebotenen Crypo-Zusatz bearbeitet.\\n\\nMit dem Support habe ausschliesslich gute Erfahrungen gemacht. Etwa 3 Mal hatte ich kontakt, da ich Fragen - keine Probleme - hatte. Selbst während den Osterfeiertagen erhielt ich eine Antwort.\\n\\nIch betrachte mich als \\\"normalen Nutzer\\\" der am liebsten mit Standard Apps und Einrichtungen arbeitet. Aus dieser Sicht kann ich pCloud uneingeschränkt empfehlen. Ob allenfalls IT-Spezialisten höhere/andere Anforderungen haben, kann ich nicht beurteilen.\\n\\nNoch einen Blick auf die Kosten. Ich habe vom Osterangebot Gebrauch gemacht. 2-TB für 400 Euro, Liftime. Bei einem realistischen Szenario von 5 Jahren betragen die Kosten gerade mal 80 Euro p.a. für 2-TB inkl. Crypto-Funktion. Das scheint mit angemessen zu sein. Bei 10 Jahren Nutzung, was bei mir nicht unüblich ist, ist der Preis noch besser.\\n\\nIch bin rundum zufrieden.\",\n href: \"https://www.trustpilot.com/users/606e8a14c61786001b8183d6\"\n },\n {\n title: \"Rafael Studer\",\n quote: \"Hervorragender Service\",\n text: \"Sehr zufrieden.\\nIch hatte eine Tiefpreis-Aktion um einen Tag verpasst. Auf meine E-Mail-Nachfrage, ob da nicht etwas zu machen sei, bekam ich nach wenigen Stunden die Rückmeldung, dass sie mir diese Option auch aktivieren würden. Hervorragender Service - kulant und schnell\",\n href: \"https://www.trustpilot.com/users/5de692db741d5fc31532e484\"\n }\n ],\n \"es\": [\n {\n title: \"Natalia C.\",\n quote: \"\\\"pCloud la mas alta calidad y garantía que existe\\\"\",\n text: \"pCloud es el mejor software que existe cuando se trata de guardar o almacenar archivos de distintas clases en nube, de manera fácil y segura, una de sus virtudes es que el programa no depende completamente de Internet para poder disfrutarlo, lo mejor de esta herramienta es que es de muy fácil uso, y permite guardar información de gran tamaño y de manera eficiente, ademas pCloud cuenta con un sistema de seguridad muy eficiente para evitar cualquier ataque de algún virus, su plataforma de uso es bastante sencilla y completa permitiendo a los usuarios garantizar sus trabajo.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3289191\"\n },\n {\n title: \"Marbán, México\",\n quote: \"Insuperable el mejor\",\n text: \"pCloud es el mejor servicio que he usado, ya que el servicio y la atención son de calidad.\\nEl costo beneficio no tiene rival, estoy muy satisfecho!\",\n href: \"https://es.trustpilot.com/users/60f579cc90d8e0001127866c\"\n },\n {\n title: \"Antonio, España\",\n quote: \"Funciona perfectamente, muy buen solución\",\n text: \"Funciona perfectamente tanto en Mac como en W10. Hasta el momento ninguna queja. El servicio de soporte es rápido y eficaz por lo menos respecto a lo que me toca.\",\n href: \"https://es.trustpilot.com/users/5ba27c564de5666d34cb8063\"\n },\n {\n title: \"Consultant in Accounting\",\n quote: \"\\\"recomendado como mejor web para compartir archivos en linea\\\"\",\n text: \"es un extraordinario sistema para estar conectado en cualquier pc o dispositivo y en cualquier parte. si colocas o subes algo en pcloud, al instante, todos los que estan conectados pueden verlo.\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-5120761\"\n },\n {\n title: \"Juana C.\",\n quote: \"\\\"Almacenamiento para toda la vida\\\"\",\n text: \"pCloud la mejor alternativa para almacenamiento en la nube ya que no se necesita espacio en nuestro computador para sincronizarse en la nube, por lo que tenemos acceso conveniente a los datos en ese \\\"disco en la nube\\\", pero a diferencia de las unidades de red que ya no están disponibles una vez que estamos fuera de la conexión, la unidad pCloud se instala como si fuera una unidad USB e incluso si no tenemos una conexión, aún podemos usar la información debido a su protección de caché\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3703834\"\n },\n {\n title: \"Adrián Meza G., Costa Rica\",\n quote: \"Excelente servicio, seguridad y dedicado servicio al cliente\",\n text: \"El servicio y sus posibilidades son excelentes. Tras adquirirlo tengo seguridad de que mis archivos están bien resguardados y, en lo que respecta a imágenes, con la calidad original intacta, además de tener un respaldo sincronizado de mis carpetas esenciales de trabajo. Lo recomiendo abiertamente.\",\n href: \"https://es.trustpilot.com/users/60f8af8b5380fe0012a35ba8\"\n },\n {\n title: \"Juana C\",\n quote: \"\\\"Almacenamiento para toda la vida\\\"\",\n text: \"pCloud la mejor alternativa para almacenamiento en la nube ya que no se necesita espacio en nuestro computador para sincronizarse en la nube, por lo que tenemos acceso conveniente a los datos en ese \\\"disco en la nube\\\", pero a diferencia de las unidades de red que ya no están disponibles una vez que estamos fuera de la conexión, la unidad pCloud se instala como si fuera una unidad USB e incluso si no tenemos una conexión, aún podemos usar la información debido a su protección de caché\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3703834\"\n },\n {\n title: \"Elena Elizabeth D\",\n quote: \"\\\"El poder del almacenamiento en la nube\\\"\",\n text: \"pCloud es un gran servicio de almacenamiento en la nube que se encargará de a asegurar sus mejores medidas de seguridad que están disponibles para que toda su información esté resguardada y recopilada proporciona acceso a todo su contenido multimedia, incluidas audio, imágenes, documentos, video, copias de seguridad y más, en cualquier lugar, en cualquier momento, en cualquier dispositivo. Ofrece una interfaz muy intuitiva y sencilla de usar, puedes almacenar gran cantidad de información que van desde los 10GB en de forma gratuita (que pueden llegar hasta 20 GB haciendo tareas sencillas como invitar a amigos, compartir la página en las redes sociales etc), el plan de por vida es muy económico en comparación con otras plataformas pudiendo obtener hasta 500 TB de\",\n href: \"https://www.g2.com/products/pcloud/reviews/pcloud-review-3453644\"\n },\n {\n title: \"Cesar H\",\n quote: \"De las mejores en Cloud Storage\",\n text: \"Es una excelente herramienta de almacenamiento en la nube. Te permite streaming de tus videos\",\n href: \"https://www.trustpilot.com/users/61320b9022f3570012127667\"\n },\n ],\n \"ru\": [\n {\n title: \"Dmitriy Kucher, Румыния\",\n quote: \"Лучший сервис\",\n text: \"Лучший сервис, простой и удобный в использовани.\\nРекомендую!!!\",\n href: \"https://trustpilot.com/users/609a3b29845ded00190e6032\"\n },\n {\n title: \"Andrew, Россия\",\n quote: \"Стабильное хранение данных\",\n text: \"Стабильное хранение данных\",\n href: \"https://trustpilot.com/users/615c0a31e400e200121e2c6c\"\n },\n {\n title: \"Емил, Болгария\",\n quote: \"Супер простой в использовании и очень надежный\",\n text: \"Пользуюсь pCloud последние 2 года. Я и моя семья всегда будем благодарны этой замечательной услуге!По сей день мы делаем резервные копии и делимся нашими файлами без особых усилий, и все наши воспоминания доступны где угодно!\",\n href: \"https://trustpilot.com/users/61a5e5bd9004ca0012167154\"\n }\n\n ],\n \"it\": [\n {\n title: \"Blumax78\",\n quote: \"Ottimo servizio\",\n text: \"Ottimo servizio. Veloce e semplice da usare. Lo sto utilizzando da oltre un anno e per ora non ho avuto alcun problema.\",\n href: \"https://it.trustpilot.com/users/5dd45dcd6bc2c816285ac45d\"\n },\n {\n title: \"Alce84\",\n quote: \"Fatto l'abbonamento a vita…\",\n text: \"Fatto l'abbonamento a vita 2tb...semplice, funziona bene e lo consiglio vivamente a tutti.\",\n href: \"https://it.trustpilot.com/users/57d3eee40000ff000a431a98\"\n },\n {\n title: \"Shingi Hyakugei\",\n quote: \"Problema risolto, ottimo servizio cloud\",\n text: \"Dopo aver subito un furto della mia mail gmail, e dopo che mi hanno rubato l'account cloud, facendomelo bloccare non si sa come, l'assistenza eccellente della pcloud ha risolto il problema in 4 giorni, che dire, un servizio da sogno, ve lo consiglio proprio.\",\n href: \"https://it.trustpilot.com/users/5f5fd54b14844e5892a06f5c\"\n },\n {\n title: \"Cliente\",\n quote: \"Ottimo servizio cloud\",\n text: \"Ottimo servizio cloud, ho fatto l'abbonamento a vita da 2T molto conveniente. Ho dovuto rivolgermi all'assistenza per un problema di sincronizzazione delle cartelle con l'app su W10, il tutto è stato risolto in tempi discretamente rapidi molto soddisfatto.\",\n href: \"https://www.trustpilot.com/users/60c303635e8b8c0019ab605d\"\n },\n {\n title: \"Vincenzo Maiello\",\n quote: \"ho installato pcloud su windows7\",\n text: \"ho installato pcloud su windows7. ho un abbonamento a vita. pero' dopo l installazione, il programma non si apre e si richiude automaticamente.\",\n href: \"https://www.trustpilot.com/users/60649a3a4fac64001ad8d667\"\n },\n {\n title: \"Matteo Lanzillo\",\n quote: \"Più che consigliato\",\n text: \"Più che consigliato, telefono arrivato imballato ottimamente e al miglior prezzo sul mercato. Non avevo mai acquistato, prima, uno smartphone su internet perché non mi fidavo, ma Tecnosell è garanzia di qualità\",\n href: \"https://www.trustpilot.com/users/5fbe9d4906deb5001b6dfc1f\"\n },\n ],\n \"pt\": [\n {\n title: \"Francisco\",\n quote: \"Fácil e Intuitivo de usar\",\n text: \"O pCloud é um produto/serviço realmente fantástico. É tão fácil e intuitivo de usar. Minha produtividade melhorou muito desde que comprei o plano de vida de 500 GB.\",\n },\n {\n title: \"Rita\",\n quote: \"Muito feliz com o pCloud\",\n text: \"pCloud não só oferece serviços de armazenamento em nuvem confiáveis e seguros. Eles têm sempre uma mente orientada para o cliente. Bom trabalho!\",\n },\n {\n title: \"António\",\n quote: \"2 anos no pCloud e muito contente\",\n text: \"O pCloud é o melhor serviço de armazenamento em nuvem de todos os tempos. É claramente melhor do que qualquer outro serviço cloud. Sua aplicação utiliza a menor quantidade de RAM e funciona perfeitamente. Finalmente, posso sincronizar meu mundo Minecraft\",\n },\n ],\n \"nl\": [\n {\n title: \"Alan MacLeod\",\n quote: \"Erg blij met pCloud\",\n text: \"Ik gebruik pCloud al een aantal jaren, eerst als gratis gebruiker, nu als levenslange gebruiker van 2TB. Ik gebruik Windows, Mac, Linux (zowel GUI als CLI) en Android-clients en ze zijn allemaal uitstekend. Wetend dat mijn gegevens veilig en transparant toegankelijk zijn voor alle besturingssystemen die ik gebruik, is voor mij een onmisbare functie.\",\n href: \"https://www.trustpilot.com/users/61853559afe9fd00120b259e\"\n },\n {\n title: \"Éamonn Herlihy\",\n quote: \"Niets dan lof voor pCloud\",\n text: \" Ik werd aangetrokken door zowel de vele functies van hun service als ook het feit dat ze destijds een van de weinige providers waren die een levenslange abonnementsvorm boden. Ik heb nooit spijt gehad van mijn beslissing. Op basis van mijn persoonlijke ervaring zou ik absoluut niet aarzelen om ze aan iedereen aan te bevelen die goede, betrouwbare, online opslag van belangrijke bestanden en even betrouwbare ondersteuning nodig heeft wanneer dat nodig is.\",\n href: \"https://www.trustpilot.com/users/588e45130000ff000a71a038\"\n },\n {\n title: \"François Gouin\",\n quote: \"2 jaar PCloud en wil niet anders\",\n text: \"Goedkoop, efficiënt en de klantenservice is echt geweldig en snel met antwoorden. Eén levenslange betaling en je hebt één van de beste oplossingen in de markt.\",\n href: \"https://www.trustpilot.com/reviews/61968094f23cf7242d9c4d70\"\n },\n ],\n \"ja\": [\n {\n title: \"スズキイッセイ\",\n quote: \"\",\n text: \"pCloud、いろいろ遊んでみましたが、かなりいいですね。同期と非同期の切り分けがはっきりしてて、思うように動いてくれるので、全然ストレスがないです。同期も比較的サクサク動くので、メインPCのドキュメントフォルダをバックアップ指定して同期して、出張ではサブPCでpCloud上のものを編集する、なんて使い方もありですね。使い勝手の点では100点だと思いました。\",\n // href: \"#\"\n },\n {\n title: \"ゆうママ\",\n quote: \"\",\n text: \"こどもがいる家庭にぴったりのサービスだと思います。写真整理が簡単なのと遠方の両親とも共有できるのがありがたいです。ストレージの容量に悩むことも、月々の支払いを考えるストレスもなくなりました。以前より子どもを撮ることが増えたと思います。いつか、子どもが大きくなったときに一緒に振り返るのが楽しみです。買ってよかったです。\",\n // href: \"#\"\n },\n {\n title: \"隅田真人\",\n quote: \"\",\n text: \"Premium Plus 2TBを買い切りで購入しました。以前は他社の月額のプランに加入していましたが、買い切りプランがあるpCloudを選択。月額は終わりのない支払ですから、なるべく変更したかったです。必要な音源が出社時間を活用し聴くことができます。PCでも端末でも利用可能なのでとても重宝しています。\",\n // href: \"#\"\n },\n ],\n \"zh\": [\n {\n title: \"張永言\",\n quote: \"我是超過3年的pCloud用戶。\",\n text: \"我是超過3年的pCloud用戶。已經擁有兩個賬戶:家用版以及商務版的。我可以隨時隨地在兩個帳戶之間共享文件夾,一切都在我的手中。pCloud的加密功能特別好用, 可以加密私人文件並且使用密碼保護我的文檔。\",\n // href: \"#\"\n },\n {\n title: \"夢呤雪\",\n quote: \"pCloud 提供良好的客戶服務以及很多高效的功能。\",\n text: \"就pCloud而言,是現代的、簡易使用的而且很安全的雲儲存的工具。pCloud提供一系列能從衆多競爭對手中脫穎而出的功能。可以在Windows、Mac、Linux、iOS和Android的平臺使用,而且也可以使用網頁版本。\",\n // href: \"#\"\n },\n {\n title: \"柳聆韻\",\n quote: \"我推薦使用pCloud的軟件!\",\n text: \"我已經爲我的業務大約6個月使用了pCloud的服務。由於GDPR的原因,我們在歐洲找到合作伙伴至關重要。客戶服務很棒而且都有解決問題的一貫方法,方案很易懂的。pCloud提供安全簡單的方式來管理您的數據, 而且也可以在不同的操作系統使用(Linux、Mac、Windows)。\",\n // href: \"#\"\n },\n {\n title: \"雲高輝\",\n quote: \"比Google Drive更好的雲儲存軟件。\",\n text: \"價格便宜,效率高,客戶服務非常好,快速回答問題。只要一次付終身費用,就可以擁有市場上最好用的雲儲存app之一。\",\n // href: \"#\"\n },\n {\n title: \"林子祥\",\n quote: \"我推薦使用pCloud的軟件!\",\n text: \"此工具與google drive相似,但pCloud更易於使用,可以簡單地向用戶發送“上傳鏈接”以及在用戶之間共享文件夾。\",\n // href: \"#\"\n },\n {\n title: \"林海月\",\n quote: \"安全性、加密文檔功能、實惠的價格,這就是pCloud。\",\n text: \"應用特點強調易用性-優秀的客戶服務-平穩的數據同步-通過共資料夾可以與他人分享文檔和文件夾。 端到端加密,就是高層的加密功能。\",\n // href: \"#\"\n },\n {\n title: \"程銘文\",\n quote: \"pCloud爲新手提供易於使用,用戶友好的界面。\",\n text: \"由於簡單的界面,它可以像保存在本地硬盤上一樣在雲存儲空間中保存數據,但不佔用設備的空間。\",\n // href: \"#\"\n },\n {\n title: \"趙景幹\",\n quote: \"最好的儲存數據的工具。\",\n text: \"通過pCloud可以同步、備份並簡單地存儲您所有的數據。您可以在訪達中查看虛擬磁盤,它就像你電腦上的另一個文件夾。\",\n // href: \"#\"\n },\n ],\n}","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport { __ } from \"../lib/utils\";\nimport { barLogos } from \"../lib/constants\";\n\nconst LogoBar = ({\n logoColor = \"#DADADF\"\n}) => {\n return (\n \n {__(\"used_by_wrokers\", \"pCloud is used by people working at\")}:\n \n {barLogos.map(({image: LogoSVG}, index) => )}\n \n \n );\n};\n\nexport default LogoBar;\n\nconst LogoBarWrapper = styled.div`\n padding: var(--spacing-2xl) 0 var(--spaces-6) 0;\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-2xl);\n`;\n\nconst Headline = styled.div`\n color: var(--color-base-black);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 17px;\n font-weight: 400;\n`;\n\nconst LogosWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--spaces-10);\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n gap: var(--spacing-2xl);\n }\n`;","var _path, _path2, _path3, _path4, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgFamilyIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 100,\n height: 64,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M99.998 47.994a15.349 15.349 0 00-1.475-6.802 15.376 15.376 0 00-4.328-5.455 13.508 13.508 0 01-7.162 6.242 13.383 13.383 0 006.076-6.33 13.352 13.352 0 00.842-8.727 13.37 13.37 0 00-4.752-7.373 13.41 13.41 0 00-8.305-2.85 8.646 8.646 0 00-1.359.07 30.14 30.14 0 012.547 11.33h-.203A32.047 32.047 0 0071.268 8.03 32.15 32.15 0 0050.008 0a32.15 32.15 0 00-21.26 8.03A32.047 32.047 0 0018.137 28.1h-.211a28.88 28.88 0 012.351-11.204C8.552 18.364 0 28.225 0 40.304a23.7 23.7 0 006.976 16.765 23.78 23.78 0 0016.807 6.93h60.484v-.023a16.046 16.046 0 0011.134-4.785 15.992 15.992 0 004.597-11.197z\",\n fill: \"url(#family-icon_svg__paint0_linear_136_2250)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.05,\n d: \"M84.268 64H23.783a23.743 23.743 0 01-9.258-1.862A23.706 23.706 0 013.96 53.411 23.646 23.646 0 01.009 39.656 23.565 23.565 0 007.163 56.05a23.646 23.646 0 0016.62 6.67h60.485v-.023a16.063 16.063 0 0010.907-4.567 16.01 16.01 0 004.812-10.786A15.995 15.995 0 0195.4 59.191a16.049 16.049 0 01-11.132 4.786V64z\",\n fill: \"#000\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.694 14.797a4.97 4.97 0 014.963 4.955c0 2.706-2.252 4.955-4.963 4.955-2.71 0-4.963-2.249-4.963-4.955 0-2.707 2.252-4.955 4.963-4.955zm11.762 3.497a4.464 4.464 0 014.462 4.456 4.464 4.464 0 01-4.462 4.455 4.464 4.464 0 01-4.463-4.455 4.464 4.464 0 014.463-4.456zM38.355 46.983v3.456l.041.041c0 .208.167.375.376.375h3.67v-3.664a3.587 3.587 0 01-4.087-.208zm5.755-2.499a4.894 4.894 0 014.046-2.123h4.588c1.752 0 3.336.916 4.212 2.415 0 .708.209 1.415.668 2.04v4.038h-2.837v-2.29a.374.374 0 00-.375-.374.374.374 0 00-.375.375v2.29H46.82v-2.29a.374.374 0 00-.375-.375.374.374 0 00-.375.375v2.29h-2.837v-3.581c0-.25 0-.541.084-.791.459-.583.75-1.29.792-1.999zm17.726 6.33a.374.374 0 00.376-.375v-3.04a3.47 3.47 0 01-1.96.666c-.626 0-1.252-.208-1.794-.54v3.289h3.378zM50.305 31.93c2.131 0 3.9 1.727 3.9 3.895a3.875 3.875 0 01-3.9 3.893 3.875 3.875 0 01-3.9-3.894 3.875 3.875 0 013.9-3.893zm11.698 14.636l5.866-6.07.056-.05c.793-.792.96-2.04.376-2.999l-3.546-6.12c-1-1.666-2.71-2.665-4.67-2.665H54.37c-1.447 0-2.785.65-3.686 1.711a5.503 5.503 0 00-1.04.103 5.674 5.674 0 011.765-1.73 5.387 5.387 0 00-4.421-2.332H40.69c-2.21 0-4.087 1.082-5.172 2.997l-3.92 6.746a2.757 2.757 0 00.417 3.372l6.506 6.496a2.772 2.772 0 003.92 0 2.761 2.761 0 000-3.914l-4.754-4.747c-.083-.083-.125-.291-.041-.458l1.918-3.33c.125-.21.334-.292.542-.167.209.124.292.333.167.54l-1.793 3.082 4.546 4.538c.5.5.792 1.083.959 1.708 1.084-1.083 2.544-1.75 4.13-1.75h4.587c1.71 0 3.337.792 4.421 2.124.167-.416.417-.832.75-1.166l4.13-4.122-1.585-2.748a.42.42 0 01.167-.54.422.422 0 01.542.166l1.752 3.04c.125.124.083.332-.042.457l-4.338 4.33c-.959.958-.959 2.54 0 3.498.46.5 1.085.75 1.752.75s1.293-.292 1.752-.75zM50.305 31.152c2.557 0 4.68 2.071 4.68 4.672a4.65 4.65 0 01-4.68 4.673 4.65 4.65 0 01-4.68-4.673 4.65 4.65 0 014.68-4.672z\",\n fill: \"#000\",\n fillOpacity: 0.05\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.694 14.019a4.97 4.97 0 014.963 4.954c0 2.707-2.252 4.955-4.963 4.955-2.71 0-4.963-2.248-4.963-4.955 0-2.706 2.252-4.954 4.963-4.954zm11.762 3.497a4.464 4.464 0 014.462 4.456 4.464 4.464 0 01-8.925 0 4.464 4.464 0 014.463-4.456zM38.355 46.205v3.456l.041.041c0 .209.167.375.376.375h3.67v-3.664a3.587 3.587 0 01-4.087-.208zm5.756-2.498a4.894 4.894 0 014.045-2.124h4.588c1.752 0 3.337.916 4.212 2.415 0 .708.209 1.416.668 2.04v4.039h-2.836v-2.29a.374.374 0 00-.376-.374.374.374 0 00-.375.374v2.29h-7.215v-2.29a.374.374 0 00-.376-.374.374.374 0 00-.375.374v2.29h-2.836v-3.58c0-.25 0-.542.083-.791.459-.583.75-1.291.793-2zm17.725 6.329a.374.374 0 00.376-.375v-3.04a3.47 3.47 0 01-1.96.667c-.626 0-1.252-.208-1.794-.542v3.29h3.378zM50.305 31.153c2.131 0 3.9 1.726 3.9 3.894a3.875 3.875 0 01-3.9 3.894 3.875 3.875 0 01-3.9-3.894 3.875 3.875 0 013.9-3.894zm11.698 14.635l5.866-6.07.056-.05c.793-.792.96-2.041.376-2.999l-3.546-6.12c-1-1.666-2.71-2.665-4.67-2.665H54.37c-1.447 0-2.785.65-3.686 1.71a5.488 5.488 0 00-1.04.104 5.674 5.674 0 011.765-1.731 5.387 5.387 0 00-4.421-2.332H40.69c-2.21 0-4.087 1.083-5.172 2.998l-3.92 6.746a2.757 2.757 0 00.417 3.372l6.506 6.496a2.772 2.772 0 003.92 0 2.761 2.761 0 000-3.914l-4.754-4.747c-.083-.083-.125-.291-.041-.458l1.918-3.331c.125-.208.334-.291.542-.167.209.125.292.334.167.542l-1.793 3.08 4.546 4.54c.5.499.792 1.082.959 1.706 1.084-1.082 2.544-1.748 4.13-1.748h4.587c1.71 0 3.337.79 4.421 2.123.167-.416.417-.832.75-1.166l4.13-4.122-1.585-2.748a.42.42 0 01.167-.541.422.422 0 01.542.166l1.752 3.04c.125.125.083.333-.042.458l-4.338 4.33c-.959.958-.959 2.54 0 3.498.46.5 1.085.75 1.752.75s1.293-.292 1.752-.75zM50.305 30.373c2.557 0 4.68 2.072 4.68 4.673a4.65 4.65 0 01-4.68 4.673 4.65 4.65 0 01-4.68-4.673 4.65 4.65 0 014.68-4.673z\",\n fill: \"#fff\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"family-icon_svg__paint0_linear_136_2250\",\n x1: 28.864,\n y1: 0.779,\n x2: 76.348,\n y2: 63.548,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#84FAB0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#20B5DB\"\n })))));\n}\nexport default SvgFamilyIcon;","import React from \"react\";\nimport styled from \"styled-components\";\nimport { sectionTitleCSS, textGradientCSS, baseButtonCSS } from \"./PricingPage/styles/Plans\";\nimport FamilyIconSVG from \"../../new_site/images/p_plans_premium/family-icon.svg\";\n\nimport { __ } from \"../lib/utils\";\nimport Button from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\n\n\nconst FamilyOffrerSection = ({\n familyPageLink = \"/family.html\"\n}) => {\n \n return (\n \n {__(\"PricingPage2025_FamilySection_title\", \"More users, More savings, One plan\")}\n \n \n {__(\"PricingPage2025_FamilySection_subtitle\", \"Want to bring your family or friends along?\")}\n {__(\"PricingPage2025_FamilySection_desc\", \"Check pCloud Family Plan - up to 5 users, one affordable solution.\")}\n \n\n \n\n \n );\n};\n\nexport default FamilyOffrerSection;\n\nconst FamilyOfferWrapper = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex: 1;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--spacing-2xl);\n padding: var(--spaces-10) 0 var(--spaces-12) 0;\n\n .offer-btn {\n ${baseButtonCSS};\n background: var(--button-family-background);\n border: 1.5px solid transparent;\n padding: 0 var(--spaces-7);\n text-transform: uppercase;\n color: var(--button-color);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n width: auto;\n min-width: 260px;\n }\n`;\n\nconst Headline = styled.div`\n ${sectionTitleCSS}\n ${textGradientCSS}\n`;\n\nconst DescWrapper = styled.div`\n color: var(--color-base-black);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst Title = styled.div`\n font-size: 26px;\n font-style: normal;\n font-weight: 600;\n line-height: 34px;\n`;\n\nconst Description = styled.div`\n font-size: 20px;\n font-style: normal;\n font-weight: 400;\n line-height: 34px;\n`;\n\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCheck(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 47.8,\n height: 45.931\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3 39.166l-6.9-1.4a1.7 1.7 0 01-1-.6 1.383 1.383 0 01-.3-1.2l.8-6.7-4.4-5.1a1.584 1.584 0 01-.5-1.2 1.5 1.5 0 01.4-1.1l4.4-5.1-.8-6.7a1.383 1.383 0 01.3-1.2 1.217 1.217 0 011-.6l6.9-1.4 3.5-6a1.765 1.765 0 01.9-.8 1.9 1.9 0 011.3.1l6.1 2.8 6.1-2.8a1.672 1.672 0 011.2-.1 1.419 1.419 0 01.9.8l3.5 6 6.8 1.4a1.7 1.7 0 011 .6 1.383 1.383 0 01.3 1.2l-.8 6.7 4.4 5.1a1.712 1.712 0 010 2.2l-4.4 5.1.8 6.7a1.383 1.383 0 01-.3 1.2 1.217 1.217 0 01-1 .6l-6.8 1.4-3.5 6a1.419 1.419 0 01-.9.8 1.99 1.99 0 01-1.3-.1l-6-2.8-6.1 2.8a1.672 1.672 0 01-1.2.1 1.419 1.419 0 01-.9-.8zm8.1-9.9a1.656 1.656 0 001.2.5 2.078 2.078 0 001.2-.5l10.3-10.3a1.5 1.5 0 00.4-1.1 1.707 1.707 0 00-1.7-1.7 2.106 2.106 0 00-1.3.5l-8.9 8.9-4.1-4.3a1.536 1.536 0 00-1.3-.5 1.76 1.76 0 00-1.3.6 2.106 2.106 0 00-.5 1.3 1.656 1.656 0 00.5 1.2z\",\n fill: \"#84c400\"\n })));\n}\nexport default SvgCheck;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgAmex(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32,\n height: 32\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 189\",\n transform: \"translate(-954 -1696)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n \"data-name\": \"Rectangle 286\",\n width: 32,\n height: 32,\n rx: 1,\n transform: \"translate(954 1696)\",\n fill: \"#016fd0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7074\",\n d: \"M965.621 1722.948v-11.453H986v3.116l-2.358 2.526 2.358 2.61v3.2h-3.789l-1.937-2.189-2.021 2.189z\",\n fill: \"#fff\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7075\",\n d: \"M966.968 1721.684v-8.926h7.579v2.021h-5.137v1.432h4.968v2.021h-4.968v1.347h5.137v2.105z\",\n fill: \"#016fd0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7076\",\n d: \"M974.463 1721.684l4.211-4.463-4.211-4.463h3.284l2.611 2.779 2.526-2.779H986l-4.126 4.463 4.126 4.295v.168h-3.116l-2.611-2.863-2.611 2.863z\",\n fill: \"#016fd0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7077\",\n d: \"M966.548 1701.305h4.884l1.768 3.874v-3.874h6.063l1.011 2.947 1.095-2.947h4.632v11.453h-24.506z\",\n fill: \"#fff\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7078\",\n d: \"M967.474 1702.568l-3.958 8.926h2.695l.758-1.768h4.042l.758 1.768h2.779l-3.958-8.926zm.337 5.137l1.179-2.863 1.179 2.863z\",\n fill: \"#016fd0\",\n fillRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7079\",\n d: \"M974.547 1711.494v-8.926h3.789l2.021 5.474 1.937-5.474h3.705v8.926h-2.358v-6.147l-2.274 6.147h-2.105l-2.358-6.147v6.147z\",\n fill: \"#016fd0\",\n fillRule: \"evenodd\"\n }))));\n}\nexport default SvgAmex;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDiners(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 39,\n height: 32\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 191\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 2635\",\n fill: \"#fff\",\n stroke: \"#e5e5e5\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 39,\n height: 32,\n rx: 5,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 38,\n height: 31,\n rx: 4.5,\n fill: \"none\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6936\",\n d: \"M21.635 26C27.052 26 32 21.52 32 16.08A10.156 10.156 0 0021.635 6H17A9.822 9.822 0 007 16.08 10.02 10.02 0 0017 26z\",\n fill: \"#0079be\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6937\",\n d: \"M17 6.8a9.174 9.174 0 109.062 9.173A9.121 9.121 0 0017 6.8zm-5.729 9.173a5.832 5.832 0 013.7-5.44V21.36a5.708 5.708 0 01-3.701-5.387zm7.812 5.44v-10.88a5.854 5.854 0 013.7 5.44 5.99 5.99 0 01-3.7 5.44z\",\n fill: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6938\",\n d: \"M21.635 26C27.052 26 32 21.52 32 16.08A10.156 10.156 0 0021.635 6H17A9.822 9.822 0 007 16.08 10.02 10.02 0 0017 26z\",\n fill: \"#0079be\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6939\",\n d: \"M16.739 6.8a9.176 9.176 0 108.958 9.173A9.067 9.067 0 0016.739 6.8zm-5.833 9.173a5.942 5.942 0 013.906-5.653v11.307a5.942 5.942 0 01-3.906-5.654zm7.813 5.653V10.32a6.044 6.044 0 010 11.307z\",\n fill: \"#fff\"\n }))));\n}\nexport default SvgDiners;","var _defs, _path, _g, _g2, _g3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDiscouver(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32,\n height: 32\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"discouver_svg__c\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7071\",\n d: \"M48.667 46.633a2.333 2.333 0 11-2.334-2.333 2.319 2.319 0 012.334 2.333z\",\n transform: \"translate(-44 -44.3)\",\n opacity: 0.5\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"discouver_svg__d\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7072\",\n d: \"M54.8 23.8H24.867a1.053 1.053 0 00-1.067 1.067v29.866a1.053 1.053 0 001.067 1.067h29.866a1.053 1.053 0 001.067-1.067V24.867a1.087 1.087 0 00-1-1.067zM24.867 55.467a.74.74 0 01-.733-.733V24.867a.74.74 0 01.733-.733H38.6A15.649 15.649 0 0154.267 39.8 15.649 15.649 0 0138.6 55.467z\",\n transform: \"translate(-23.8 -23.8)\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"discouver_svg__e\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n \"data-name\": \"Ellipse 87\",\n cx: 29.667,\n cy: 29.667,\n r: 29.667\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"discouver_svg__a\",\n x1: 0.765,\n y1: 0.891,\n x2: 0.423,\n y2: 0.356,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ff9200\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.207,\n stopColor: \"#ff8e00\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.442,\n stopColor: \"#ff8000\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.62,\n stopColor: \"#ff7100\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.818,\n stopColor: \"#ff5e00\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#ff5200\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"discouver_svg__b\",\n x1: 0.711,\n y1: 0.884,\n x2: 0.212,\n y2: -0.092,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ff7100\",\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.217,\n stopColor: \"#ff5900\",\n stopOpacity: 0.165\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.505,\n stopColor: \"#ff4000\",\n stopOpacity: 0.38\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.769,\n stopColor: \"#ff3100\",\n stopOpacity: 0.58\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.982,\n stopColor: \"#ff2b00\",\n stopOpacity: 0.741\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6940\",\n d: \"M14.8 31.666A15.649 15.649 0 0030.467 16 15.649 15.649 0 0014.8.333\",\n fill: \"none\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 180\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6941\",\n d: \"M30.467 16A15.649 15.649 0 0114.8 31.666H31a.74.74 0 00.733-.733V1.066A.74.74 0 0031 .333H14.8A15.734 15.734 0 0130.467 16z\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6942\",\n d: \"M.4 1.066v29.867a.74.74 0 00.733.733H14.8A15.649 15.649 0 0030.467 16 15.649 15.649 0 0014.8.333H1.067a.727.727 0 00-.667.733z\",\n fill: \"#fff\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 185\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 184\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6943\",\n d: \"M2.734 13.8H1.467v4.333h1.267a1.97 1.97 0 001.533-.533 2.225 2.225 0 00.8-1.667A2.16 2.16 0 002.734 13.8zm1 3.267a1.45 1.45 0 01-1.133.333h-.2v-2.867h.2a1.45 1.45 0 011.133.333 1.573 1.573 0 01.467 1.067 1.373 1.373 0 01-.467 1.134z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 200\",\n fill: \"#231f20\",\n d: \"M5.467 13.8h.867v4.333h-.867z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6944\",\n d: \"M8.4 15.467c-.533-.2-.667-.333-.667-.533a.539.539 0 01.6-.467A.926.926 0 019 14.8l.467-.6a1.76 1.76 0 00-1.267-.467 1.244 1.244 0 00-1.333 1.268c0 .6.267.933 1.067 1.2a2.754 2.754 0 01.6.267.5.5 0 01.267.467.616.616 0 01-.667.6 1.006 1.006 0 01-.933-.6l-.533.533a1.644 1.644 0 001.533.8 1.442 1.442 0 001.533-1.4c-.067-.734-.334-1.067-1.334-1.401z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6945\",\n d: \"M9.934 16a2.248 2.248 0 002.267 2.267A2.286 2.286 0 0013.268 18v-1a1.389 1.389 0 01-1 .467 1.418 1.418 0 01-1.467-1.533 1.384 1.384 0 011.4-1.467 1.42 1.42 0 011.067.467v-1a2.111 2.111 0 00-1.067-.267A2.349 2.349 0 009.934 16z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6946\",\n d: \"M20.001 16.733L18.867 13.8h-.933l1.8 4.467h.467l1.866-4.467H21.2z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6947\",\n d: \"M22.467 18.133h2.4V17.4h-1.533v-1.133h1.467v-.733h-1.467v-1h1.533V13.8h-2.4z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6948\",\n d: \"M28.267 15.067c0-.8-.533-1.267-1.533-1.267h-1.267v4.333h.867V16.4h.133l1.2 1.733h1.067l-1.4-1.8a1.244 1.244 0 00.933-1.266zm-1.733.733h-.267v-1.333h.267c.533 0 .8.2.8.667.066.466-.267.666-.8.666z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6949\",\n d: \"M28.934 14.067a.143.143 0 00-.133-.133h-.134v.4h.067v-.2l.133.133H29l-.133-.133zm-.2 0v-.133c.067 0 .067 0 .067.067s-.001.066-.067.066z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6950\",\n d: \"M28.8 13.8a.333.333 0 10.333.333.315.315 0 00-.333-.333zm0 .6a.267.267 0 11.267-.267.287.287 0 01-.267.267z\",\n fill: \"#231f20\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 181\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6951\",\n d: \"M48.667 46.633a2.319 2.319 0 01-2.333 2.333A2.278 2.278 0 0144 46.633a2.333 2.333 0 114.667 0z\",\n transform: \"translate(-30.533 -30.633)\",\n fill: \"url(#discouver_svg__a)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6952\",\n d: \"M48.667 46.633a2.319 2.319 0 01-2.333 2.333A2.278 2.278 0 0144 46.633a2.333 2.333 0 114.667 0z\",\n transform: \"translate(-30.533 -30.633)\",\n opacity: 0.65,\n fill: \"url(#discouver_svg__b)\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 183\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 182\",\n clipPath: \"url(#discouver_svg__c)\",\n transform: \"translate(13.467 13.667)\",\n opacity: 0.5\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6953\",\n d: \"M2.4 0A2.333 2.333 0 11.067 2.333 2.319 2.319 0 012.4 0z\",\n fill: \"#030100\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6954\",\n d: \"M2.4 0A2.333 2.333 0 11.067 2.333 2.362 2.362 0 012.4 0z\",\n fill: \"#060200\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6955\",\n d: \"M2.4 0A2.333 2.333 0 11.067 2.333 2.362 2.362 0 012.4 0z\",\n fill: \"#0a0300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6956\",\n d: \"M2.4 0A2.333 2.333 0 11.067 2.333 2.362 2.362 0 012.4 0z\",\n fill: \"#0d0300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6957\",\n d: \"M2.4 0a2.319 2.319 0 012.333 2.333A2.333 2.333 0 112.4 0z\",\n fill: \"#100400\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6958\",\n d: \"M2.4 0a2.319 2.319 0 012.333 2.333A2.333 2.333 0 112.4 0z\",\n fill: \"#130500\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6959\",\n d: \"M2.4 0a2.319 2.319 0 012.333 2.333 2.421 2.421 0 01-2.333 2.4A2.367 2.367 0 012.4 0z\",\n fill: \"#160600\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6960\",\n d: \"M2.467 0A2.319 2.319 0 014.8 2.333a2.421 2.421 0 01-2.333 2.4A2.362 2.362 0 01.135 2.4 2.294 2.294 0 012.467 0z\",\n fill: \"#190700\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6961\",\n d: \"M2.466.068a2.319 2.319 0 012.333 2.333 2.421 2.421 0 01-2.333 2.4A2.362 2.362 0 01.133 2.468a2.258 2.258 0 012.333-2.4z\",\n fill: \"#1d0800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6962\",\n d: \"M2.466.067a2.376 2.376 0 012.4 2.333 2.433 2.433 0 01-2.4 2.4A2.362 2.362 0 01.133 2.467a2.3 2.3 0 012.333-2.4z\",\n fill: \"#200900\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6963\",\n d: \"M2.466.067a2.376 2.376 0 012.4 2.333 2.433 2.433 0 01-2.4 2.4A2.362 2.362 0 01.133 2.467a2.335 2.335 0 012.333-2.4z\",\n fill: \"#230a00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6964\",\n d: \"M2.466.067a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4A2.362 2.362 0 01.133 2.4 2.319 2.319 0 012.466.067z\",\n fill: \"#260a00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6965\",\n d: \"M2.466.067a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 010-4.667z\",\n fill: \"#290b00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6966\",\n d: \"M2.466.067a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 010-4.667z\",\n fill: \"#2c0c00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6967\",\n d: \"M2.466.067a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 010-4.667z\",\n fill: \"#300d00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6968\",\n d: \"M2.466.067a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 010-4.667z\",\n fill: \"#330e00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6969\",\n d: \"M2.466.067a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 010-4.667z\",\n fill: \"#360f00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6970\",\n d: \"M2.466.135a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4A2.362 2.362 0 01.133 2.467 2.278 2.278 0 012.466.135z\",\n fill: \"#391000\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6971\",\n d: \"M2.466.135a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4A2.362 2.362 0 01.133 2.467 2.278 2.278 0 012.466.135z\",\n fill: \"#3c1000\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6972\",\n d: \"M2.466.133a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 110-4.667z\",\n fill: \"#3f1100\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6973\",\n d: \"M2.466.133a2.364 2.364 0 012.4 2.267 2.433 2.433 0 01-2.4 2.4 2.333 2.333 0 110-4.667z\",\n fill: \"#431200\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6974\",\n d: \"M2.533.133a2.32 2.32 0 012.4 2.267 2.48 2.48 0 01-2.4 2.4A2.362 2.362 0 01.2 2.466 2.319 2.319 0 012.533.133z\",\n fill: \"#461300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6975\",\n d: \"M2.533.133a2.32 2.32 0 012.4 2.267 2.48 2.48 0 01-2.4 2.4 2.333 2.333 0 110-4.667z\",\n fill: \"#491400\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6976\",\n d: \"M2.533.133a2.32 2.32 0 012.4 2.267 2.48 2.48 0 01-2.4 2.4 2.333 2.333 0 110-4.667z\",\n fill: \"#4c1500\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6977\",\n d: \"M2.533.133a2.32 2.32 0 012.4 2.267 2.48 2.48 0 01-2.4 2.4 2.333 2.333 0 110-4.667z\",\n fill: \"#4f1600\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6978\",\n d: \"M2.533.133a2.32 2.32 0 012.4 2.267 2.48 2.48 0 01-2.4 2.4 2.333 2.333 0 110-4.667z\",\n fill: \"#521600\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6979\",\n d: \"M2.533.133a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4 2.3 2.3 0 110-4.6z\",\n fill: \"#561700\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6980\",\n d: \"M2.533.201a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.362 2.362 0 01.2 2.466 2.263 2.263 0 012.533.201z\",\n fill: \"#591800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6981\",\n d: \"M2.533.201a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.362 2.362 0 01.2 2.466 2.263 2.263 0 012.533.201z\",\n fill: \"#5c1900\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6982\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.2 2.533 2.319 2.319 0 012.533.2z\",\n fill: \"#5f1a00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6983\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467 2.333 2.333 0 110-4.667z\",\n fill: \"#621b00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6984\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467 2.333 2.333 0 110-4.667z\",\n fill: \"#651c00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6985\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.2 2.533 2.456 2.456 0 012.533.2z\",\n fill: \"#691d00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6986\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.2 2.533 2.456 2.456 0 012.533.2z\",\n fill: \"#6c1d00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6987\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.2 2.533 2.456 2.456 0 012.533.2z\",\n fill: \"#6f1e00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6988\",\n d: \"M2.533.2a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.2 2.533 2.456 2.456 0 012.533.2z\",\n fill: \"#721f00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6989\",\n d: \"M2.6.268a2.309 2.309 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.267 2.6 2.278 2.278 0 012.6.268z\",\n fill: \"#752000\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6990\",\n d: \"M2.6.268a2.266 2.266 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.267 2.6 2.278 2.278 0 012.6.268z\",\n fill: \"#782100\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6991\",\n d: \"M2.6.268a2.266 2.266 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.267 2.6 2.278 2.278 0 012.6.268z\",\n fill: \"#7c2200\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6992\",\n d: \"M2.6.268a2.266 2.266 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.267 2.6 2.278 2.278 0 012.6.268z\",\n fill: \"#7f2300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6993\",\n d: \"M2.6.267a2.266 2.266 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467 2.333 2.333 0 110-4.667z\",\n fill: \"#822300\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6994\",\n d: \"M2.6.267A2.256 2.256 0 015 2.4a2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#852400\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6995\",\n d: \"M2.6.267A2.256 2.256 0 015 2.4a2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#882500\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6996\",\n d: \"M2.6.267A2.256 2.256 0 015 2.4a2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.267 2.534 2.447 2.447 0 012.6.267z\",\n fill: \"#8b2600\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6997\",\n d: \"M2.6.267A2.3 2.3 0 015 2.4a2.54 2.54 0 01-2.4 2.467A2.362 2.362 0 01.267 2.534 2.447 2.447 0 012.6.267z\",\n fill: \"#8f2700\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6998\",\n d: \"M2.6.335A2.3 2.3 0 015 2.468a2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#922800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 6999\",\n d: \"M2.6.335a2.365 2.365 0 012.467 2.132A2.551 2.551 0 012.6 4.935a2.3 2.3 0 110-4.6z\",\n fill: \"#952900\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7000\",\n d: \"M2.6.335a2.365 2.365 0 012.467 2.132A2.551 2.551 0 012.6 4.935a2.3 2.3 0 110-4.6z\",\n fill: \"#982900\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7001\",\n d: \"M2.6.335a2.365 2.365 0 012.467 2.132A2.551 2.551 0 012.6 4.935a2.3 2.3 0 110-4.6z\",\n fill: \"#9b2a00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7002\",\n d: \"M2.6.335a2.365 2.365 0 012.467 2.132A2.551 2.551 0 012.6 4.935a2.3 2.3 0 110-4.6z\",\n fill: \"#9e2b00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7003\",\n d: \"M2.666.333a2.365 2.365 0 012.467 2.133 2.551 2.551 0 01-2.467 2.467A2.362 2.362 0 01.333 2.6 2.305 2.305 0 012.666.333z\",\n fill: \"#a22c00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7004\",\n d: \"M2.666.333a2.365 2.365 0 012.467 2.133 2.6 2.6 0 01-2.467 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#a52d00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7005\",\n d: \"M2.666.333a2.365 2.365 0 012.467 2.133 2.662 2.662 0 01-2.467 2.533 2.333 2.333 0 110-4.667z\",\n fill: \"#a82e00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7006\",\n d: \"M2.666.333a2.365 2.365 0 012.467 2.133 2.662 2.662 0 01-2.467 2.533A2.362 2.362 0 01.333 2.666 2.408 2.408 0 012.666.333z\",\n fill: \"#ab2f00\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7007\",\n d: \"M2.666.401a2.318 2.318 0 012.467 2.132 2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.733 2.359 2.359 0 012.666.401z\",\n fill: \"#ae3000\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7008\",\n d: \"M2.666.401c1.267.067 2.467.8 2.467 2.067a2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.666 2.347 2.347 0 012.666.401z\",\n fill: \"#b13000\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7009\",\n d: \"M2.666.401c1.267.067 2.467.8 2.467 2.067a2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.666 2.347 2.347 0 012.666.401z\",\n fill: \"#b53100\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7010\",\n d: \"M2.666.401c1.267.067 2.467.8 2.467 2.067a2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.666 2.347 2.347 0 012.666.401z\",\n fill: \"#b83200\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7011\",\n d: \"M5.133 2.466a2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.666 2.361 2.361 0 012.666.333c1.267.133 2.467.867 2.467 2.133z\",\n fill: \"#b30\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7012\",\n d: \"M2.666.401c1.267.067 2.467.8 2.467 2.067a2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.666 2.347 2.347 0 012.666.401z\",\n fill: \"#bc3604\",\n opacity: 0.983\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7013\",\n d: \"M2.666.4c1.267.067 2.467.8 2.467 2.067A2.662 2.662 0 012.666 5 2.319 2.319 0 01.333 2.667 2.4 2.4 0 012.666.4z\",\n fill: \"#bd3a09\",\n opacity: 0.966\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7014\",\n d: \"M2.666.4c1.267.067 2.467.8 2.467 2.067A2.662 2.662 0 012.666 5 2.319 2.319 0 01.333 2.667 2.4 2.4 0 012.666.4z\",\n fill: \"#be3d0d\",\n opacity: 0.949\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7015\",\n d: \"M2.666.4a2.318 2.318 0 012.467 2.133 2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.733 2.406 2.406 0 012.666.4z\",\n fill: \"#c04111\",\n opacity: 0.932\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7016\",\n d: \"M2.666.4a2.318 2.318 0 012.467 2.133 2.662 2.662 0 01-2.467 2.533A2.319 2.319 0 01.333 2.733 2.406 2.406 0 012.666.4z\",\n fill: \"#c14416\",\n opacity: 0.915\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7017\",\n d: \"M2.666.4a2.365 2.365 0 012.467 2.133A2.6 2.6 0 012.666 5 2.319 2.319 0 01.333 2.667 2.447 2.447 0 012.666.4z\",\n fill: \"#c2481a\",\n opacity: 0.898\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7018\",\n d: \"M2.666.468A2.365 2.365 0 015.133 2.6a2.551 2.551 0 01-2.467 2.468A2.319 2.319 0 01.333 2.733 2.347 2.347 0 012.666.468z\",\n fill: \"#c34b1e\",\n opacity: 0.881\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7019\",\n d: \"M2.733.468A2.365 2.365 0 015.2 2.6a2.551 2.551 0 01-2.467 2.468 2.3 2.3 0 110-4.6z\",\n fill: \"#c44f23\",\n opacity: 0.864\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7020\",\n d: \"M2.733.468a2.3 2.3 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#c55227\",\n opacity: 0.848\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7021\",\n d: \"M2.733.468a2.3 2.3 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#c7562b\",\n opacity: 0.831\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7022\",\n d: \"M2.733.468a2.3 2.3 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#c85930\",\n opacity: 0.814\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7023\",\n d: \"M2.733.468a2.3 2.3 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467 2.3 2.3 0 110-4.6z\",\n fill: \"#c95c34\",\n opacity: 0.797\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7024\",\n d: \"M2.733.467a2.3 2.3 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.734 2.349 2.349 0 012.733.467z\",\n fill: \"#ca6038\",\n opacity: 0.78\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7025\",\n d: \"M2.733.467a2.3 2.3 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.734 2.349 2.349 0 012.733.467z\",\n fill: \"#cb633d\",\n opacity: 0.763\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7026\",\n d: \"M2.733.467a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.734 2.349 2.349 0 012.733.467z\",\n fill: \"#cc6741\",\n opacity: 0.746\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7027\",\n d: \"M2.733.467a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.734 2.4 2.4 0 012.733.467z\",\n fill: \"#cd6a45\",\n opacity: 0.729\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7028\",\n d: \"M2.733.467a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.734 2.447 2.447 0 012.733.467z\",\n fill: \"#cf6e49\",\n opacity: 0.712\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7029\",\n d: \"M2.733.467a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.734 2.447 2.447 0 012.733.467z\",\n fill: \"#d0714e\",\n opacity: 0.695\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7030\",\n d: \"M2.733.535a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.8 2.347 2.347 0 012.733.535z\",\n fill: \"#d17552\",\n opacity: 0.678\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7031\",\n d: \"M2.733.535a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.8 2.347 2.347 0 012.733.535z\",\n fill: \"#d27856\",\n opacity: 0.661\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7032\",\n d: \"M2.733.535a2.256 2.256 0 012.4 2.133 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.8 2.347 2.347 0 012.733.535z\",\n fill: \"#d37c5b\",\n opacity: 0.644\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7033\",\n d: \"M2.733.535a2.266 2.266 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.867 2.359 2.359 0 012.733.535z\",\n fill: \"#d47f5f\",\n opacity: 0.627\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7034\",\n d: \"M2.733.535a2.266 2.266 0 012.4 2.2 2.54 2.54 0 01-2.4 2.467A2.319 2.319 0 01.4 2.867 2.359 2.359 0 012.733.535z\",\n fill: \"#d68363\",\n opacity: 0.61\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7035\",\n d: \"M2.733.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.319 2.319 0 01.4 2.8 2.4 2.4 0 012.733.533z\",\n fill: \"#d78668\",\n opacity: 0.593\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7036\",\n d: \"M2.733.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.319 2.319 0 01.4 2.8 2.4 2.4 0 012.733.533z\",\n fill: \"#d8896c\",\n opacity: 0.576\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7037\",\n d: \"M2.8.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4 2.3 2.3 0 110-4.6z\",\n fill: \"#d98d70\",\n opacity: 0.559\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7038\",\n d: \"M2.8.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4 2.3 2.3 0 110-4.6z\",\n fill: \"#da9075\",\n opacity: 0.542\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7039\",\n d: \"M2.8.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.319 2.319 0 01.467 2.8 2.35 2.35 0 012.8.533z\",\n fill: \"#db9479\",\n opacity: 0.525\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7040\",\n d: \"M2.8.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.319 2.319 0 01.467 2.8 2.35 2.35 0 012.8.533z\",\n fill: \"#dc977d\",\n opacity: 0.508\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7041\",\n d: \"M2.8.533a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4A2.319 2.319 0 01.467 2.8 2.4 2.4 0 012.8.533z\",\n fill: \"#de9b82\",\n opacity: 0.491\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7042\",\n d: \"M2.8.601a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4 2.3 2.3 0 110-4.6z\",\n fill: \"#df9e86\",\n opacity: 0.475\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7043\",\n d: \"M2.8.601a2.309 2.309 0 012.4 2.2 2.48 2.48 0 01-2.4 2.4 2.3 2.3 0 110-4.6z\",\n fill: \"#e0a28a\",\n opacity: 0.458\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7044\",\n d: \"M2.8.601a2.309 2.309 0 012.4 2.2 2.433 2.433 0 01-2.4 2.4 2.3 2.3 0 110-4.6z\",\n fill: \"#e1a58f\",\n opacity: 0.441\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7045\",\n d: \"M2.8.6a2.309 2.309 0 012.4 2.2 2.433 2.433 0 01-2.4 2.4A2.319 2.319 0 01.467 2.867 2.349 2.349 0 012.8.6z\",\n fill: \"#e2a993\",\n opacity: 0.424\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7046\",\n d: \"M2.8.6a2.25 2.25 0 012.333 2.2A2.421 2.421 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.349 2.349 0 012.8.6z\",\n fill: \"#e3ac97\",\n opacity: 0.407\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7047\",\n d: \"M2.8.6a2.25 2.25 0 012.333 2.2A2.421 2.421 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.349 2.349 0 012.8.6z\",\n fill: \"#e4af9c\",\n opacity: 0.39\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7048\",\n d: \"M2.8.6a2.25 2.25 0 012.333 2.2A2.421 2.421 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.349 2.349 0 012.8.6z\",\n fill: \"#e6b3a0\",\n opacity: 0.373\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7049\",\n d: \"M2.8.6a2.25 2.25 0 012.333 2.2A2.421 2.421 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.349 2.349 0 012.8.6z\",\n fill: \"#e7b6a4\",\n opacity: 0.356\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7050\",\n d: \"M2.8.6a2.25 2.25 0 012.333 2.2A2.421 2.421 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.349 2.349 0 012.8.6z\",\n fill: \"#e8baa9\",\n opacity: 0.339\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7051\",\n d: \"M2.8.6a2.25 2.25 0 012.333 2.2A2.421 2.421 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.447 2.447 0 012.8.6z\",\n fill: \"#e9bdad\",\n opacity: 0.322\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7052\",\n d: \"M2.8.6a2.263 2.263 0 012.333 2.267 2.421 2.421 0 01-2.333 2.4A2.319 2.319 0 01.467 2.933 2.456 2.456 0 012.8.6z\",\n fill: \"#eac1b1\",\n opacity: 0.305\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7053\",\n d: \"M2.8.6a2.305 2.305 0 012.333 2.267A2.362 2.362 0 012.8 5.2 2.319 2.319 0 01.467 2.867 2.447 2.447 0 012.8.6z\",\n fill: \"#ebc4b6\",\n opacity: 0.288\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7054\",\n d: \"M2.8.668a2.305 2.305 0 012.333 2.267A2.362 2.362 0 012.8 5.268 2.319 2.319 0 01.467 2.933 2.347 2.347 0 012.8.668z\",\n fill: \"#edc8ba\",\n opacity: 0.271\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7055\",\n d: \"M2.866.668a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 2.933 2.263 2.263 0 012.866.668z\",\n fill: \"#eecbbe\",\n opacity: 0.254\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7056\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#efcfc2\",\n opacity: 0.237\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7057\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#f0d2c7\",\n opacity: 0.22\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7058\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#f1d6cb\",\n opacity: 0.203\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7059\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#f2d9cf\",\n opacity: 0.186\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7060\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#f3dcd4\",\n opacity: 0.169\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7061\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#f5e0d8\",\n opacity: 0.153\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7062\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 2.934 2.35 2.35 0 012.866.667z\",\n fill: \"#f6e3dc\",\n opacity: 0.136\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7063\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 2.934 2.35 2.35 0 012.866.667z\",\n fill: \"#f7e7e1\",\n opacity: 0.119\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7064\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 2.934 2.4 2.4 0 012.866.667z\",\n fill: \"#f8eae5\",\n opacity: 0.102\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7065\",\n d: \"M2.866.667a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 2.934 2.4 2.4 0 012.866.667z\",\n fill: \"#f9eee9\",\n opacity: 0.085\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7066\",\n d: \"M2.866.735a2.305 2.305 0 012.333 2.267 2.362 2.362 0 01-2.333 2.333 2.3 2.3 0 110-4.6z\",\n fill: \"#faf1ee\",\n opacity: 0.068\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7067\",\n d: \"M2.866.733A2.305 2.305 0 015.199 3a2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 3 2.349 2.349 0 012.866.733z\",\n fill: \"#fcf5f2\",\n opacity: 0.051\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7068\",\n d: \"M2.866.733A2.305 2.305 0 015.199 3a2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 3 2.349 2.349 0 012.866.733z\",\n fill: \"#fdf8f6\",\n opacity: 0.034\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7069\",\n d: \"M2.866.733A2.305 2.305 0 015.199 3a2.362 2.362 0 01-2.333 2.333A2.319 2.319 0 01.533 3 2.349 2.349 0 012.866.733z\",\n fill: \"#fefcfb\",\n opacity: 0.017\n })))))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 188\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 187\",\n clipPath: \"url(#discouver_svg__d)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 186\",\n transform: \"translate(-22.667 -13.667)\",\n clipPath: \"url(#discouver_svg__e)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 201\",\n fill: \"#e04e15\",\n d: \"M-10.869 18.827l51.382-29.666L70.18 40.543 18.797 70.209z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 202\",\n fill: \"#e04f15\",\n d: \"M-10.268 19.903L41.114-9.763l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 203\",\n fill: \"#e15015\",\n d: \"M-9.61 20.945L41.772-8.721 71.44 42.66 20.056 72.327z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 204\",\n fill: \"#e15115\",\n d: \"M-9.01 22.022L42.372-7.644 72.04 43.737 20.656 73.404z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 205\",\n fill: \"#e25215\",\n d: \"M-8.409 23.098L42.973-6.568 72.64 44.813 21.257 74.48z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 206\",\n fill: \"#e25316\",\n d: \"M-7.751 24.14L43.631-5.526l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 207\",\n fill: \"#e35416\",\n d: \"M-7.117 25.274L44.265-4.392 73.932 46.99 22.549 76.656z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 208\",\n fill: \"#e35516\",\n d: \"M-6.516 26.35L44.866-3.316l29.667 51.382L23.15 77.732z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 209\",\n fill: \"#e35616\",\n d: \"M-5.916 27.426L45.466-2.24l29.667 51.382L23.75 78.808z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 210\",\n fill: \"#e45716\",\n d: \"M-5.257 28.469L46.125-1.197l29.667 51.382L24.409 79.85z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 211\",\n fill: \"#e45716\",\n d: \"M-4.657 29.545L46.725-.121 76.392 51.26 25.009 80.927z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 212\",\n fill: \"#e55816\",\n d: \"M-4.056 30.621L47.326.955l29.667 51.382L25.61 82.003z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 213\",\n fill: \"#e55916\",\n d: \"M-3.455 31.697L47.927 2.031l29.667 51.382L26.21 83.079z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 214\",\n fill: \"#e55a16\",\n d: \"M-2.797 32.74L48.585 3.074l29.667 51.382L26.87 84.122z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 215\",\n fill: \"#e65b16\",\n d: \"M-2.197 33.816L49.185 4.15l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 216\",\n fill: \"#e65c17\",\n d: \"M-1.596 34.892L49.786 5.226l29.667 51.382L28.07 86.274z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 217\",\n fill: \"#e75d17\",\n d: \"M-.938 35.935L50.444 6.269 80.111 57.65 28.728 87.317z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 218\",\n fill: \"#e75e17\",\n d: \"M-.337 37.011L51.045 7.345l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 219\",\n fill: \"#e85f17\",\n d: \"M.263 38.087L51.645 8.421l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 220\",\n fill: \"#e86017\",\n d: \"M.864 39.163L52.246 9.497l29.667 51.382L30.53 90.545z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 221\",\n fill: \"#e86117\",\n d: \"M1.12 39.551L52.502 9.885 82.17 61.267 30.786 90.933z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 222\",\n fill: \"#e96217\",\n d: \"M1.352 40.03l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 223\",\n fill: \"#e96317\",\n d: \"M1.608 40.418L52.99 10.752l29.667 51.382L31.274 91.8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 224\",\n fill: \"#e96418\",\n d: \"M1.864 40.806L53.246 11.14l29.667 51.382L31.53 92.188z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 225\",\n fill: \"#e96518\",\n d: \"M2.062 41.227l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 226\",\n fill: \"#ea6618\",\n d: \"M2.318 41.615L53.7 11.949 83.367 63.33 31.984 92.997z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 227\",\n fill: \"#ea6718\",\n d: \"M2.55 42.094l51.382-29.666L83.6 63.81 32.216 93.476z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 228\",\n fill: \"#ea6818\",\n d: \"M2.806 42.482l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 229\",\n fill: \"#ea6918\",\n d: \"M3.062 42.87l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 230\",\n fill: \"#eb6a18\",\n d: \"M3.26 43.291l51.382-29.666L84.31 65.006 32.926 94.673z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 231\",\n fill: \"#eb6b19\",\n d: \"M3.516 43.679l51.382-29.666 29.667 51.382L33.182 95.06z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 232\",\n fill: \"#eb6c19\",\n d: \"M3.748 44.158L55.13 14.492l29.667 51.382L33.414 95.54z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 233\",\n fill: \"#eb6d19\",\n d: \"M4.004 44.546L55.386 14.88l29.667 51.382L33.67 95.928z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 234\",\n fill: \"#ec6e19\",\n d: \"M4.203 44.968l51.382-29.666 29.667 51.382L33.87 96.35z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 235\",\n fill: \"#ec6f19\",\n d: \"M4.459 45.356L55.841 15.69l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 236\",\n fill: \"#ec7019\",\n d: \"M4.748 45.801L56.13 16.135l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 237\",\n fill: \"#ec7119\",\n d: \"M4.946 46.223l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 238\",\n fill: \"#ed7219\",\n d: \"M5.202 46.61l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 239\",\n fill: \"#ed731a\",\n d: \"M5.401 47.032l51.382-29.666L86.45 68.748 35.067 98.414z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 240\",\n fill: \"#ed741a\",\n d: \"M5.657 47.42l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 241\",\n fill: \"#ed751a\",\n d: \"M5.946 47.865l51.382-29.666L86.995 69.58 35.612 99.247z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 242\",\n fill: \"#ee761a\",\n d: \"M6.144 48.287l51.382-29.666 29.667 51.382L35.81 99.669z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 243\",\n fill: \"#ee771a\",\n d: \"M6.401 48.675l51.382-29.666L87.45 70.39l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 244\",\n fill: \"#ee781a\",\n d: \"M6.599 49.096L57.981 19.43l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 245\",\n fill: \"#ef791a\",\n d: \"M6.855 49.484l51.382-29.666L87.904 71.2 36.52 100.866z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 246\",\n fill: \"#ef7a1b\",\n d: \"M7.087 49.963l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 247\",\n fill: \"#ef7b1b\",\n d: \"M7.343 50.351l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 248\",\n fill: \"#ef7c1b\",\n d: \"M7.599 50.739l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 249\",\n fill: \"#f07d1b\",\n d: \"M7.797 51.16l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 250\",\n fill: \"#f07e1b\",\n d: \"M8.053 51.548l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 251\",\n fill: \"#f07f1b\",\n d: \"M8.285 52.027l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 252\",\n fill: \"#f0801b\",\n d: \"M8.541 52.415l51.382-29.666L89.59 74.13l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 253\",\n fill: \"#f1801c\",\n d: \"M8.797 52.803l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 254\",\n fill: \"#f1811c\",\n d: \"M8.995 53.224l51.382-29.666L90.044 74.94 38.66 104.606z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 255\",\n fill: \"#f1821c\",\n d: \"M9.251 53.612l51.382-29.666L90.3 75.328l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 256\",\n fill: \"#f1831c\",\n d: \"M9.483 54.091l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 257\",\n fill: \"#f2841c\",\n d: \"M9.739 54.479l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 258\",\n fill: \"#f2851c\",\n d: \"M9.937 54.9l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 259\",\n fill: \"#f2861c\",\n d: \"M10.193 55.288l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 260\",\n fill: \"#f2871d\",\n d: \"M10.449 55.676L61.831 26.01l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 261\",\n fill: \"#f3881d\",\n d: \"M10.681 56.155l51.382-29.666L91.73 77.87l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 262\",\n fill: \"#f3891d\",\n d: \"M10.937 56.543l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 263\",\n fill: \"#f38a1d\",\n d: \"M11.135 56.964l51.382-29.666L92.184 78.68 40.8 108.346z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 264\",\n fill: \"#f48b1d\",\n d: \"M11.392 57.352l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 265\",\n fill: \"#f48c1d\",\n d: \"M11.681 57.798l51.382-29.666L92.73 79.513 41.347 109.18z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 266\",\n fill: \"#f48d1d\",\n d: \"M11.879 58.219l51.382-29.666 29.667 51.382L41.545 109.6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 267\",\n fill: \"#f48e1e\",\n d: \"M12.135 58.607l51.382-29.666 29.667 51.382L41.8 109.989z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 268\",\n fill: \"#f58f1e\",\n d: \"M12.334 59.028l51.382-29.666 29.667 51.382L42 110.41z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 269\",\n fill: \"#f5901e\",\n d: \"M12.59 59.416L63.972 29.75 93.64 81.131l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 270\",\n fill: \"#f5911e\",\n d: \"M12.821 59.895l51.382-29.666L93.87 81.61l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 271\",\n fill: \"#f5921e\",\n d: \"M13.077 60.283l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 272\",\n fill: \"#f6931e\",\n d: \"M13.334 60.671l51.382-29.666 29.667 51.382L43 112.053z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 273\",\n fill: \"#f6941e\",\n d: \"M13.532 61.092l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 274\",\n fill: \"#f6951e\",\n d: \"M13.788 61.48L65.17 31.814l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 275\",\n fill: \"#f6961f\",\n d: \"M14.02 61.959l51.382-29.666L95.07 83.674 43.686 113.34z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 276\",\n fill: \"#f7971f\",\n d: \"M14.276 62.347l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 277\",\n fill: \"#f7981f\",\n d: \"M14.532 62.735l51.382-29.666L95.581 84.45l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 278\",\n fill: \"#f7991f\",\n d: \"M14.73 63.157l51.382-29.666L95.78 84.873l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 279\",\n fill: \"#f79a1f\",\n d: \"M14.986 63.544l51.382-29.666L96.035 85.26l-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 280\",\n fill: \"#f89b1f\",\n d: \"M15.218 64.023L66.6 34.357l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 281\",\n fill: \"#f89c1f\",\n d: \"M15.474 64.411l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 282\",\n fill: \"#f89d20\",\n d: \"M15.672 64.833l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 283\",\n fill: \"#f89e20\",\n d: \"M15.928 65.221L67.31 35.555l29.667 51.382-51.383 29.666z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 284\",\n fill: \"#f99f20\",\n d: \"M16.184 65.609l51.382-29.666 29.667 51.382L45.85 116.99z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Rectangle 285\",\n fill: \"#f9a020\",\n d: \"M16.416 66.088l51.382-29.666 29.667 51.382-51.383 29.666z\"\n }))))));\n}\nexport default SvgDiscouver;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgMastercard(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 39,\n height: 32\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 195\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Rectangle 2635\",\n fill: \"#fff\",\n stroke: \"#e5e5e5\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 39,\n height: 32,\n rx: 5,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 38,\n height: 31,\n rx: 4.5,\n fill: \"none\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 194\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 193\",\n transform: \"translate(-806 -1616)\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n \"data-name\": \"Ellipse 90\",\n cx: 9,\n cy: 9,\n r: 9,\n transform: \"translate(823 1623)\",\n fill: \"#fea109\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n \"data-name\": \"Ellipse 91\",\n cx: 9,\n cy: 9,\n r: 9,\n transform: \"translate(810 1623)\",\n fill: \"#ff2a20\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Intersection 2\",\n d: \"M17 16a8.968 8.968 0 012.5-6.225A8.97 8.97 0 0122 16a8.973 8.973 0 01-2.5 6.226A8.971 8.971 0 0117 16z\",\n fill: \"#ff5015\"\n })))));\n}\nexport default SvgMastercard;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPaypal(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 27,\n height: 32\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 190\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7086\",\n d: \"M7.67 30.915l.552-3.523-1.229-.03H1.12L5.201 1.37a.344.344 0 01.114-.2.332.332 0 01.217-.081h9.9c3.287 0 5.556.687 6.74 2.043a4.666 4.666 0 011.087 2.03 7.371 7.371 0 010 2.8l-.013.082v.718l.555.316a3.9 3.9 0 011.124.861 4.018 4.018 0 01.912 2.055 8.731 8.731 0 01-.13 2.982 10.531 10.531 0 01-1.216 3.375 6.931 6.931 0 01-1.927 2.121 7.8 7.8 0 01-2.595 1.176 12.885 12.885 0 01-3.243.376h-.767a2.321 2.321 0 00-2.29 1.968l-.058.317-.975 6.209-.044.228a.2.2 0 01-.061.133.163.163 0 01-.1.037H7.67z\",\n fill: \"#253b80\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7087\",\n d: \"M24.33 8.13q-.044.285-.1.583c-1.306 6.735-5.773 9.061-11.479 9.061H9.844a1.413 1.413 0 00-1.395 1.2l-1.486 9.477-.419 2.686a.746.746 0 00.734.863h5.153a1.242 1.242 0 001.225-1.05l.051-.263.97-6.184.062-.339a1.241 1.241 0 011.225-1.052h.771c4.992 0 8.9-2.036 10.043-7.928.477-2.461.23-4.516-1.032-5.962A4.93 4.93 0 0024.33 8.13z\",\n fill: \"#179bd7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7088\",\n d: \"M22.965 7.583q-.3-.087-.617-.159t-.653-.124a16.064 16.064 0 00-2.561-.188h-7.761a1.228 1.228 0 00-.535.122 1.242 1.242 0 00-.688.93l-1.651 10.5-.053.311a1.413 1.413 0 011.395-1.2h2.905c5.706 0 10.173-2.328 11.479-9.061.039-.2.072-.393.1-.583a6.944 6.944 0 00-1.074-.455 4.591 4.591 0 00-.286-.093z\",\n fill: \"#222d65\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 7089\",\n d: \"M10.149 8.164a1.238 1.238 0 011.224-1.051h7.761a16.064 16.064 0 012.561.188q.336.054.653.124t.617.159c.1.03.2.06.293.091a7.049 7.049 0 011.074.455c.388-2.489 0-4.183-1.343-5.718C21.512.723 18.847 0 15.436 0h-9.9a1.417 1.417 0 00-1.4 1.2L.011 27.463a.853.853 0 00.839.988h6.113L8.5 18.669z\",\n fill: \"#253b80\"\n }))));\n}\nexport default SvgPaypal;","var _defs, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgVisa(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 39,\n height: 32\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"visa_svg__a\",\n x2: 1,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#0e2c9a\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#20225f\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-263 -289)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n \"data-name\": \"Rectangle 2635\",\n width: 39,\n height: 32,\n rx: 5,\n transform: \"translate(263 289)\",\n fill: \"url(#visa_svg__a)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M286.888 300.077c-2.072 0-3.9 1.108-3.9 3.2 0 2.338 3.291 2.585 3.291 3.692 0 .492-.609.985-1.463.985a4.73 4.73 0 01-2.316-.615l-.609 2.092a7.142 7.142 0 002.681.492c2.316 0 4.022-1.231 4.022-3.323 0-2.462-3.291-2.708-3.291-3.815 0-.369.487-.862 1.341-.862a4.3 4.3 0 011.95.492l.366-1.969a7.988 7.988 0 00-2.072-.369zm-19.013.123v.246a7.573 7.573 0 011.706.492c.975.369 1.1.615 1.219 1.231l1.828 7.508h2.438l3.778-9.477h-2.438l-2.437 6.523-.975-5.538a1.159 1.159 0 00-1.1-.985zm12.066 0l-1.95 9.477h2.316l1.95-9.477h-2.316zm13.163 0c-.609 0-.853.369-1.1.862l-3.529 8.615h2.438l.487-1.477h3.047l.241 1.477h2.194l-1.95-9.477h-1.829zm.366 2.585l.731 3.569h-1.95z\",\n fill: \"#fff\"\n }))));\n}\nexport default SvgVisa;","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport CheckIcon from \"../../new_site/images/plans/encrypted-payment/check.svg\";\nimport AmexIcon from \"../../new_site/images/plans/encrypted-payment/amex.svg\";\nimport DinersIcon from \"../../new_site/images/plans/encrypted-payment/diners.svg\";\nimport DiscoverIcon from \"../../new_site/images/plans/encrypted-payment/discouver.svg\";\nimport MastercardIcon from \"../../new_site/images/plans/encrypted-payment/mastercard.svg\";\nimport PaypalIcon from \"../../new_site/images/plans/encrypted-payment/paypal.svg\";\nimport VisaIcon from \"../../new_site/images/plans/encrypted-payment/visa.svg\";\n\nimport { __ } from \"../lib/utils\";\n\nconst PaymentLogos = ({ direction = \"column\", fontSize = 22 }) => {\n return (\n \n \n \n
{__(\"10_DAYS_MONEY_BACK\")}
\n
{__(\"secure_ssl_payment_short\")}
\n
\n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default PaymentLogos;\n\nconst PaymentLogosContainer = styled.div`\n width: 100%;\n margin: 0;\n display: flex;\n flex-direction: ${({ direction = \"column\" }) => direction};\n align-items: center;\n justify-content: center;\n gap: 20px 35px;\n flex-wrap: wrap;\n\n @media (max-width: 768px) {\n margin: 0px;\n padding: 20px 0 34px 0;\n }\n`;\n\nconst LogosWrap = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n margin: 0px 10px;\n\n &:first-of-type {\n margin-top: 0px;\n }\n\n &:last-of-type {\n margin-bottom: 0px;\n }\n }\n`;\n\nconst Headline = styled.div`\n font-size: ${({ fontsize = 22}) => fontsize}px;\n font-weight: 500;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: normal;\n text-align: ${({ textalign = \"center\"}) => textalign};\n color: #000;\n\n div {\n margin: 6px auto;\n\n &:first-of-type {\n margin-top: 0px;\n }\n\n &:last-of-type {\n margin-bottom: 0px;\n }\n }\n`;","var _path, _path2, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgGogoMedal(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 37,\n height: 37,\n fill: \"none\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.488 13.748a8.645 8.645 0 00-6.232 2.648 9.102 9.102 0 00-2.578 6.394c0 2.416.913 4.683 2.578 6.394a8.642 8.642 0 006.232 2.648c2.36 0 4.568-.937 6.233-2.648 3.434-3.527 3.434-9.262 0-12.788a8.626 8.626 0 00-6.233-2.648zm.706 4.36l.96 1.988a.794.794 0 00.59.44l2.138.323c.636.092.902.902.428 1.364l-1.48 1.48a.837.837 0 00-.196.844l.682 1.978c.23.659-.417 1.283-1.052 1.006l-2.475-1.11a.736.736 0 00-.624 0l-2.475 1.11c-.624.277-1.283-.347-1.052-1.006l.682-1.978a.813.813 0 00-.196-.844l-1.48-1.48c-.463-.462-.208-1.271.428-1.364l2.139-.324a.768.768 0 00.59-.44l.959-1.988c.312-.601 1.145-.601 1.434 0z\",\n fill: \"url(#gogo-medal_svg__paint0_linear_150_54)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.232 2.313A1.31 1.31 0 006.937 3.63v6.694c0 .463.245.902.642 1.133l3.569 2.114a11.99 11.99 0 00-4.269 9.218c0 6.57 5.197 11.898 11.609 11.898 6.411 0 11.608-5.327 11.608-11.898a11.99 11.99 0 00-4.223-9.18l3.561-2.152c.387-.23.628-.67.628-1.133V3.631c0-.729-.571-1.318-1.269-1.318H8.232zm16.8 1.156v9.493a11.451 11.451 0 00-3.018-1.512V3.47h3.018zm-9.955 0v7.944a11.438 11.438 0 00-3.007 1.46V3.47h3.007zm3.422 29.785a9.988 9.988 0 01-7.215-3.064 10.52 10.52 0 01-2.994-7.4c0-2.798 1.063-5.423 2.994-7.4a10.047 10.047 0 0114.442 0c3.977 4.081 3.977 10.718 0 14.8-1.943 1.977-4.51 3.064-7.227 3.064z\",\n fill: \"#707070\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"gogo-medal_svg__paint0_linear_150_54\",\n x1: 18.487,\n y1: 13.748,\n x2: 18.487,\n y2: 31.832,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4824\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#D72C0B\"\n })))));\n}\nexport default SvgGogoMedal;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCyanRightArrow(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 7,\n height: 11,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.931 5.172L.872 1.36A.659.659 0 01.66.87.642.642 0 01.872.373.74.74 0 011.397.17a.74.74 0 01.526.203L6.4 4.58c.093.088.159.18.197.277a.85.85 0 01.058.315.85.85 0 01-.058.315.777.777 0 01-.197.277L1.923 9.971a.748.748 0 01-.52.199.73.73 0 01-.53-.2.652.652 0 01-.217-.492c0-.193.072-.358.216-.494l4.06-3.812z\",\n fill: \"#17BED0\"\n })));\n}\nexport default SvgCyanRightArrow;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronTop(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 10,\n height: 6,\n fill: \"none\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.22 5.598a.76.76 0 001.063 0l3.722-3.637 3.72 3.637A.761.761 0 009.78 5.59a.727.727 0 00.009-1.03L5.536.403a.76.76 0 00-1.063 0L.22 4.559a.726.726 0 000 1.04z\",\n fill: \"#17BED0\"\n })));\n}\nexport default SvgChevronTop;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronBottom(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 11,\n height: 6,\n fill: \"none\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.72.403a.76.76 0 011.063 0L5.505 4.04 9.225.403a.761.761 0 011.055.009.726.726 0 01.009 1.03L6.036 5.598a.76.76 0 01-1.063 0L.72 1.442a.726.726 0 010-1.04z\",\n fill: \"#17BED0\"\n })));\n}\nexport default SvgChevronBottom;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCheckStampIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13 26a2.776 2.776 0 01-1.976-.818L9.67 23.828a2.808 2.808 0 00-1.974-.818H5.782a2.801 2.801 0 01-2.794-2.794V18.3a2.812 2.812 0 00-.818-1.974L.816 14.972A2.776 2.776 0 010 13a2.775 2.775 0 01.816-1.975L2.17 9.671a2.812 2.812 0 00.818-1.974V5.783a2.8 2.8 0 012.794-2.794h1.914a2.808 2.808 0 001.974-.818L11.024.817A2.772 2.772 0 0113 0a2.773 2.773 0 011.975.818l1.354 1.354a2.808 2.808 0 001.974.818h1.914a2.8 2.8 0 012.794 2.794V7.7c.002.74.296 1.45.817 1.974l1.354 1.354A2.775 2.775 0 0126 13a2.775 2.775 0 01-.816 1.975l-1.354 1.354a2.81 2.81 0 00-.817 1.974v1.914a2.8 2.8 0 01-2.794 2.794h-1.914c-.74.002-1.45.296-1.974.818l-1.354 1.354A2.769 2.769 0 0113 26zm4.407-16.793l-6.072 6.083-2.074-2.082A.716.716 0 008.735 13a.713.713 0 00-.527.207.716.716 0 00-.207.528c0 .213.07.389.207.527l2.495 2.484c.18.18.392.271.633.271.24 0 .451-.09.632-.271l6.495-6.484a.716.716 0 00.207-.528.713.713 0 00-.207-.527.716.716 0 00-.528-.207.712.712 0 00-.527.207z\",\n fill: \"#63BF00\"\n })));\n}\nexport default SvgCheckStampIcon;","export function onDocumentReady(func: Function) {\n if (document.readyState == \"complete\") {\n func();\n } else {\n $(window).on(\"load\", func);\n }\n}\n\nlet onSentSubscribeRequestResolve = null;\nconst onSentSubscribeRequest = new Promise((resolve, reject) => onSentSubscribeRequestResolve = resolve); \n\nconst subscriptions = {\n xhr: null,\n chkint: null,\n resetTo: null,\n resetTimeoutMilisec: 10000,\n subscribers: [],\n onSentSubscribeRequestResolve: onSentSubscribeRequestResolve,\n onSentSubscribeRequest: onSentSubscribeRequest,\n\n add: function (subscriber, instance) {\n console.log(\"Adding new subscriber: \", subscriber, instance);\n this.remove(subscriber);\n this.checkInstanceInterface(instance);\n\n var subs = { name: subscriber, state: 'preparing', instance: instance };\n this.subscribers.push(subs);\n return this;\n },\n\n checkInstanceInterface: function (instance) {\n var requiredMethods = ['getParams', 'handleEvents'];\n requiredMethods.forEach(function (method) {\n if (typeof instance[method] !== 'function') {\n throw Error(\"Instance must provide method: \", method);\n }\n });\n },\n\n remove: function (subscriber) {\n console.log(\"removing subscriber\", subscriber);\n\n var subs = this.subscribers;\n this.subscribers = subs.filter(function (sub) { return sub.name !== subscriber; });\n\n if (this.subscribers.length === 0) {\n console.log(\"zero subscribers\");\n this.abort();\n }\n },\n\n setState: function (subscriber, state) {\n var subs = this._getSubscriber(subscriber);\n\n if (subs === undefined) {\n console.log(subscriber);\n //console.trace();\n }\n\n subs.state = state;\n\n this.listen();\n //setTimeout(this.listen.bind(this), 0);\n\n return this;\n },\n\n _getSubscriber: function (subscriber) {\n return this.subscribers.filter(function (sub) { return sub.name == subscriber; })[0];\n },\n\n _getReady: function () {\n return this.subscribers.filter(function (sub) { return sub.state == 'ready'; });\n },\n\n reset: function() {\n this.abort();\n this.subscribers = [];\n },\n\n stop: function () {\n this.abort();\n },\n\n resume: function () {\n this.listen();\n },\n\n listen: function () {\n var self = this;\n var params = {};\n var subscribefor = [];\n var subsrdy = this._getReady();\n\n if (this.isRunning()) {\n this.abort();\n }\n if (subsrdy.length == 0) {\n return;\n }\n\n // waiting all subscribers to get ready\n if (subsrdy.length != this.subscribers.length) {\n return;\n }\n\n subsrdy.forEach(function (sub) {\n subscribefor.push(sub.name);\n params = $.extend(params, sub.instance.getParams());\n });\n\n params.subscribefor = subscribefor.join(',');\n params._t = $.now;\n\n console.log(subsrdy);\n console.log(\"running\", params);\n\n onDocumentReady(() => {\n this.xhr = pCloudGlobals.apiMethod('subscribe', params, function (ret) {\n if (self.chkint) {\n clearInterval(self.chkint);\n }\n\n console.log(\"receiving update: \", ret);\n\n self.setState(ret.from, 'processing');\n var sub = self._getSubscriber(ret.from);\n if (sub) {\n sub.instance.handleEvents(ret);\n }\n\n if (self.restartTo) {\n clearTimeout(self.restartTo);\n self.restartTo = null;\n }\n if (!sub) {\n self.restartTo = setTimeout(self.listen.bind(self), 100);\n }\n }, {\n timeout: 0,\n errorCallback: function(ret) {\n console.log(\"Subscription API Error\", ret);\n\n self.abort();\n },\n onXhrError: function(xhr, status, error) {\n console.log('subscribe rejected: ', arguments, xhr.status);\n\n if (self.resetTo)\n clearTimeout(self.resetTo);\n\n self.resetTo = setTimeout(self.listen.bind(self), self.resetTimeoutMilisec);\n self.resetTimeoutMilisec += Math.round(10 / 100 * self.resetTimeoutMilisec);\n }\n });\n this.onSentSubscribeRequestResolve();\n this.setCheck();\n });\n },\n setCheck: function () {\n var self = this;\n\n if (this.chkint) {\n clearInterval(this.chkint);\n this.chkint = null;\n }\n\n this.chkint = setInterval(function () {\n var xhr = self.xhr;\n if (xhr && xhr.readyState > 0 && xhr.readyState < 4) {\n } else if (xhr) {\n console.log('subscriptions: ', xhr.readyState)\n self.listen();\n }\n }, 3000);\n },\n isRunning: function () {\n return (this.xhr && this.xhr.readyState > 0 && this.xhr.readyState < 4);\n },\n abort: function () {\n if (this.xhr && typeof this.xhr.abort == 'function') {\n console.log('Aborting xhr...');\n try {\n this.xhr.abort();\n } catch(e) {};\n this.xhr = null;\n console.log('Done aborting');\n }\n\n if (this.restartTo) { // this restarts the listen after successfull listen\n clearTimeout(this.restartTo);\n this.restartTo = null;\n }\n if (this.resetTo) { // this resets the listen after killed/aborted listen\n clearTimeout(this.resetTo);\n this.resetTo = null;\n }\n if (this.chkint) { // this checks diff from time to time using interval (mainly for waking apps)\n clearInterval(this.chkint);\n this.chkint = null;\n }\n }\n}\n\nexport default subscriptions;\n","import subscriptions from \"./subscriptions\";\n\nlet authToken = false;\nlet listeners = [];\nlet isRunning = false;\nlet lastDiffId = -1;\nlet xhr;\nlet diffIsReadyResolve = null;\nlet diffIsReadyReject = null;\nconst setDiffIsReady = () => new Promise((resolve, reject) => {\n diffIsReadyResolve = resolve;\n diffIsReadyReject = reject;\n });\n\nlet diffIsReady = {promise: setDiffIsReady()};\nconst onDiffIsReady = () => diffIsReady.promise;\n\nconst diffInstance = {\n getParams: function() {\n return {\n diffid: lastDiffId,\n iconformat: \"id\",\n difflimit: 500,\n auth: authToken\n };\n },\n handleEvents: function(ret) {\n lastDiffId = ret.diffid;\n\n processDiffEvents(ret.entries);\n setTimeout(\n subscriptions.setState.bind(subscriptions, \"diff\", \"ready\"),\n ret.entries.length\n );\n }\n};\n\nfunction processDiffEvents(entries) {\n listeners.forEach(listener => listener(entries));\n}\n\nfunction listen(token, callback) {\n\n if (authToken !== token) {\n authToken = token;\n }\n\n if (typeof callback === \"function\") {\n listeners.push(callback);\n }\n\n start();\n\n return (skipStop) => {\n if (typeof callback !== \"function\") {\n return;\n }\n\n listeners.splice(listeners.indexOf(callback));\n\n console.log(\"removed diff listener\", `#${listeners.length}`);\n\n if (!listeners.length && !skipStop) {\n stop();\n }\n };\n}\n\nfunction start() {\n if (isRunning) {\n return;\n }\n\n isRunning = true;\n subscriptions.add(\"diff\", diffInstance);\n\n const onErrorDiffRequest = () => {\n isRunning = false;\n diffIsReadyReject();\n }\n\n xhr = pCloudGlobals.apiMethod(\"diff\", { last: 0, auth: authToken }, function(ret) {\n lastDiffId = ret.diffid;\n\n subscriptions.setState(\"diff\", \"ready\");\n \n subscriptions.onSentSubscribeRequest.then(() => {\n diffIsReadyResolve();\n });\n\n xhr = false;\n }, \n { \n errorCallback: onErrorDiffRequest,\n onXhrError: onErrorDiffRequest\n });\n}\n\nfunction stop() {\n if (xhr) {\n xhr.abort();\n }\n\n lastDiffId = -1;\n subscriptions.remove(\"diff\");\n isRunning = false;\n diffIsReady.promise = setDiffIsReady();\n}\n\nexport default { listen, stop, onDiffIsReady };","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgVisa(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 54 36\",\n overflow: \"visible\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M5.5 35.5c-2.8 0-5-2.3-5-5v-25c0-2.8 2.3-5 5-5h42.9c2.8 0 5 2.3 5 5v24.9c0 2.8-2.3 5-5 5H5.5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M48.5 1C51 1 53 3 53 5.5v24.9c0 2.5-2 4.5-4.5 4.5h-43C3 35 1 33 1 30.5v-25C1 3 3 1 5.5 1h43m0-1h-43C2.5 0 0 2.5 0 5.5v24.9C0 33.5 2.5 36 5.5 36h42.9c3.1 0 5.5-2.5 5.5-5.5v-25c.1-3-2.4-5.5-5.4-5.5z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1434CB\",\n d: \"M33.4 11.2c-3 0-5.6 1.5-5.6 4.4 0 3.3 4.7 3.5 4.7 5.1 0 .7-.8 1.3-2.1 1.3-1.9 0-3.4-.9-3.4-.9l-.6 2.9s1.7.7 3.9.7c3.3 0 5.8-1.6 5.8-4.5 0-3.5-4.7-3.7-4.7-5.2 0-.5.7-1.1 2-1.1 1.5 0 2.8.6 2.8.6l.6-2.8c-.2.1-1.5-.5-3.4-.5zm-27.3.2l-.1.4s1.3.2 2.4.7c1.5.5 1.6.8 1.8 1.8l2.7 10.3h3.6L22 11.4h-3.6l-3.5 9-1.4-7.6c-.1-.9-.8-1.4-1.6-1.4H6.1zm17.3 0l-2.8 13.2H24l2.8-13.2h-3.4zm19 0c-.8 0-1.3.4-1.6 1.2l-5 12h3.6l.7-2h4.4l.4 2H48l-2.7-13.2h-2.9zm.4 3.6l1.1 4.9h-2.8l1.7-4.9z\"\n })));\n}\nexport default SvgVisa;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgVisaV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 0H4a4 4 0 00-4 4v24a4 4 0 004 4h32a4 4 0 004-4V4a4 4 0 00-4-4z\",\n fill: \"#fff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 .25H4A3.75 3.75 0 00.25 4v24A3.75 3.75 0 004 31.75h32A3.75 3.75 0 0039.75 28V4A3.75 3.75 0 0036 .25z\",\n stroke: \"#DDD\",\n strokeWidth: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 11.078c-2.125 0-4 1.108-4 3.2 0 2.338 3.375 2.585 3.375 3.692 0 .492-.625.985-1.5.985A4.944 4.944 0 0120 18.34l-.625 2.092c.878.335 1.81.502 2.75.492 2.375 0 4.125-1.231 4.125-3.323 0-2.462-3.375-2.708-3.375-3.815 0-.369.5-.862 1.375-.862a4.5 4.5 0 012 .492l.375-1.969a8.379 8.379 0 00-2.125-.369zM5 11.201v.246c.6.096 1.187.261 1.75.492 1 .369 1.125.615 1.25 1.231l1.875 7.508h2.5l3.875-9.477h-2.5l-2.5 6.523-1-5.538a1.18 1.18 0 00-1.125-.985H5zm12.375 0l-2 9.477h2.375l2-9.477h-2.375zm13.5 0c-.625 0-.875.369-1.125.862l-3.625 8.615h2.5l.5-1.477h3.125l.25 1.477h2.25l-2-9.477h-1.875zm.375 2.585l.75 3.569h-2l1.25-3.569z\",\n fill: \"#1434CB\"\n })));\n}\nexport default SvgVisaV2;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgMastercard(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 54 36\",\n overflow: \"visible\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M5.5 35.5c-2.8 0-5-2.3-5-5v-25c0-2.8 2.3-5 5-5h42.9c2.8 0 5 2.3 5 5v24.9c0 2.8-2.3 5-5 5H5.5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M48.5 1C51 1 53 3 53 5.5v24.9c0 2.5-2 4.5-4.5 4.5h-43C3 35 1 33 1 30.5v-25C1 3 3 1 5.5 1h43m0-1h-43C2.5 0 0 2.5 0 5.5v24.9C0 33.5 2.5 36 5.5 36h42.9c3.1 0 5.5-2.5 5.5-5.5v-25c.1-3-2.4-5.5-5.4-5.5z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#EA001B\",\n cx: 20.3,\n cy: 18,\n r: 10\n }), /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#F79F1A\",\n cx: 33.7,\n cy: 18,\n r: 10\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FF6002\",\n d: \"M23.7 18c0 3 1.3 5.5 3.3 7.3 2-1.8 3.3-4.5 3.3-7.3S29 12.5 27 10.7c-2 1.8-3.3 4.3-3.3 7.3z\"\n }))));\n}\nexport default SvgMastercard;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgMastercardV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 0H4a4 4 0 00-4 4v24a4 4 0 004 4h32a4 4 0 004-4V4a4 4 0 00-4-4z\",\n fill: \"#fff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 .25H4A3.75 3.75 0 00.25 4v24A3.75 3.75 0 004 31.75h32A3.75 3.75 0 0039.75 28V4A3.75 3.75 0 0036 .25z\",\n stroke: \"#DDD\",\n strokeWidth: 0.5\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.75 24.23c4.832 0 8.75-3.857 8.75-8.615S18.582 7 13.75 7 5 10.857 5 15.615s3.918 8.615 8.75 8.615z\",\n fill: \"#FF2A20\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.25 24.5a8.75 8.75 0 100-17.5 8.75 8.75 0 000 17.5z\",\n fill: \"#FEA109\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5 15.746a8.72 8.72 0 012.521-6.142 8.516 8.516 0 011.8 9.345 8.53 8.53 0 01-1.932 2.805 8.722 8.722 0 01-2.389-6.008z\",\n fill: \"#FF5015\"\n }))));\n}\nexport default SvgMastercardV2;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgAmex(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 54 36\",\n overflow: \"visible\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M5.5 35.5c-2.8 0-5-2.3-5-5v-25c0-2.8 2.3-5 5-5h42.9c2.8 0 5 2.3 5 5v24.9c0 2.8-2.3 5-5 5H5.5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M48.5 1C51 1 53 3 53 5.5v24.9c0 2.5-2 4.5-4.5 4.5h-43C3 35 1 33 1 30.5v-25C1 3 3 1 5.5 1h43m0-1h-43C2.5 0 0 2.5 0 5.5v24.9C0 33.5 2.5 36 5.5 36h42.9c3.1 0 5.5-2.5 5.5-5.5v-25c.1-3-2.4-5.5-5.4-5.5z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"evenodd\",\n fill: \"#016FD0\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.6 23.2h8.5v-2.3h-5.7v-1.5H38v-2.3h-5.6v-1.6h5.7v-2.3h-8.5zM51.1 13.2h-3.5l-2.9 3.1-3-3.1h-3.6l4.8 5-4.6 5h3.3l2.9-3.3 3 3.3h3.6V23l-4.6-4.9zM21.8 19.4l-2.3-6.2h-4.3v9.6L11 13.2H7.3L3 23.2h3.1l.8-2h4.6l.8 2H18v-6.9l2.6 6.9h2.5l2.5-6.9v6.9h2.6v-10h-4.1l-2.3 6.2zm-14.1-.7L9 15.5l1.3 3.3H7.7z\"\n }))));\n}\nexport default SvgAmex;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgAmexV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 0H4a4 4 0 00-4 4v24a4 4 0 004 4h32a4 4 0 004-4V4a4 4 0 00-4-4z\",\n fill: \"#fff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 .25H4A3.75 3.75 0 00.25 4v24A3.75 3.75 0 004 31.75h32A3.75 3.75 0 0039.75 28V4A3.75 3.75 0 0036 .25z\",\n stroke: \"#DDD\",\n strokeWidth: 0.5\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 4v24h24V4H8z\",\n fill: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.72 9.888l.768-2.088H32V4H8v24h24v-3.792h-3.312l-1.224-1.432-1.272 1.432h-9.408v-7.624h-3.1L17.56 7.8h3.776l.912 1.992V7.8h4.688l.784 2.088zm-2.648 1.384l-.008-.84.32.84 1.56 4.168H28.5l1.568-4.168.3-.832v5H32v-6.4h-2.712l-1.232 3.248-.328.88-.336-.88-1.24-3.248H23.44v6.4h1.632v-4.168zM21.56 15.44h1.88l-2.816-6.4H18.44l-2.832 6.4h1.856l.5-1.232h3.1l.5 1.232h-.004zm-2.368-4.232l.32-.8.32.8.664 1.616h-1.968l.664-1.616zm-1.1 5.384v6.376h5.348v-1.384h-3.712v-1.112h3.64V19.1h-3.64v-1.12h3.712v-1.388h-5.348zm11.288 6.376h2.12l-2.992-3.2 2.992-3.176h-2.084l-1.928 2.072-1.92-2.072H23.44l2.984 3.2-2.984 3.176h2.06l1.944-2.08 1.936 2.08zm.808-3.208L32 21.6v-3.656l-1.808 1.816h-.004z\",\n fill: \"#006FCF\"\n }))));\n}\nexport default SvgAmexV2;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDiners(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 28 22\",\n overflow: \"visible\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n fill: \"#FFF\",\n d: \"M3.2 21.5c-1.5 0-2.7-1.2-2.7-2.7V3.2C.5 1.7 1.7.5 3.2.5h21.7c1.5 0 2.7 1.2 2.7 2.7v15.7c0 1.5-1.2 2.7-2.7 2.7H3.2z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EBEBEB\",\n d: \"M24.8 1C26 1 27 2 27 3.2v15.7c0 1.2-1 2.2-2.2 2.2H3.2C2 21 1 20 1 18.8V3.2C1 2 2 1 3.2 1h21.6m0-1H3.2C1.4 0 0 1.4 0 3.2v15.7C0 20.6 1.4 22 3.2 22h21.7c1.7 0 3.2-1.4 3.2-3.2V3.2C28 1.4 26.6 0 24.8 0z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0079BE\",\n d: \"M15.4 17.3c3.5 0 6.6-2.8 6.6-6.3 0-3.8-3.2-6.4-6.6-6.4h-3C8.9 4.7 6 7.3 6 11.1c0 3.5 2.9 6.3 6.4 6.3h3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M12.4 5.2c-3.2 0-5.8 2.6-5.8 5.8 0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8zM8.7 11c0-1.6 1-2.9 2.4-3.4v6.9c-1.4-.6-2.4-1.9-2.4-3.5zm5 3.4V7.6c1.4.5 2.4 1.9 2.4 3.4 0 1.6-1 2.9-2.4 3.4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0079BE\",\n d: \"M15.4 17.3c3.5 0 6.6-2.8 6.6-6.3 0-3.8-3.2-6.4-6.6-6.4h-3C8.9 4.7 6 7.3 6 11.1c0 3.5 2.9 6.3 6.4 6.3h3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M12.4 5.2c-3.2 0-5.8 2.6-5.8 5.8 0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8zM8.7 11c0-1.6 1-2.9 2.4-3.4v6.9c-1.4-.6-2.4-1.9-2.4-3.5zm5 3.4V7.6c1.4.5 2.4 1.9 2.4 3.4 0 1.6-1 2.9-2.4 3.4z\"\n }))));\n}\nexport default SvgDiners;","var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDinersV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 0H4a4 4 0 00-4 4v24a4 4 0 004 4h32a4 4 0 004-4V4a4 4 0 00-4-4z\",\n fill: \"#fff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 .25H4A3.75 3.75 0 00.25 4v24A3.75 3.75 0 004 31.75h32A3.75 3.75 0 0039.75 28V4A3.75 3.75 0 0036 .25z\",\n stroke: \"#DDD\",\n strokeWidth: 0.5\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.507 6.826a9.155 9.155 0 10-.002 18.31 9.155 9.155 0 00.002-18.31zm-5.8 9.156a5.812 5.812 0 013.724-5.415v10.83a5.81 5.81 0 01-3.725-5.415h.001zm7.878 5.414v-10.83a5.8 5.8 0 010 10.832v-.002z\",\n fill: \"#fff\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.189 26c5.466.026 10.455-4.458 10.455-9.913A10.21 10.21 0 0022.189 6h-4.7A9.864 9.864 0 007.4 16.087 10.019 10.019 0 0017.485 26h4.704z\",\n fill: \"#004A98\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.507 6.826a9.155 9.155 0 10-.002 18.31 9.155 9.155 0 00.002-18.31zm-5.8 9.156a5.812 5.812 0 013.724-5.415v10.83a5.81 5.81 0 01-3.725-5.415h.001zm7.878 5.414v-10.83a5.8 5.8 0 010 10.832v-.002z\",\n fill: \"#fff\"\n })));\n}\nexport default SvgDinersV2;","var _path, _path2, _g, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgJcb(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 28 22\",\n overflow: \"visible\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n fill: \"#FFF\",\n d: \"M3.2 21.5c-1.5 0-2.7-1.2-2.7-2.7V3.2C.5 1.7 1.7.5 3.2.5h21.7c1.5 0 2.7 1.2 2.7 2.7v15.7c0 1.5-1.2 2.7-2.7 2.7H3.2z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EBEBEB\",\n d: \"M24.8 1C26 1 27 2 27 3.2v15.7c0 1.2-1 2.2-2.2 2.2H3.2C2 21 1 20 1 18.8V3.2C1 2 2 1 3.2 1h21.6m0-1H3.2C1.4 0 0 1.4 0 3.2v15.7C0 20.6 1.4 22 3.2 22h21.7c1.7 0 3.2-1.4 3.2-3.2V3.2C28 1.4 26.6 0 24.8 0z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#40A737\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.1 12.3h1.3c.2 0 .4-.2.4-.5s-.2-.5-.4-.5h-1.3v1z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.1 5c-1.1 0-2 .9-2 2v2.1h3c.6 0 1.1.4 1.1.9s-.3.8-.9.9c.6 0 1.1.4 1.1 1s-.5 1-1.3 1H17V17h3c1.1 0 2-.9 2-2V5h-2.9z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.6 10.2c0-.3-.2-.4-.4-.5h-1.1v1h1.1c.2-.1.4-.3.4-.5z\"\n }))), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#004E94\",\n d: \"M8 5c-1.1 0-2 .9-2 2v4.9c.6.3 1.1.5 1.7.5.7 0 1.1-.4 1.1-1V9.1h1.7v2.3c0 .9-.6 1.6-2.5 1.6-1.1 0-2-.2-2-.2V17h2.9c1.1 0 2-.9 2-2V5H8z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BE1833\",\n d: \"M13.5 5c-1.1 0-2 .9-2 2v2.6c.5-.4 1.4-.7 2.8-.6.8 0 1.6.2 1.6.2v.8c-.4-.2-.9-.4-1.5-.4-1.1-.1-1.7.5-1.7 1.4 0 .9.6 1.5 1.7 1.4.6 0 1.1-.2 1.5-.4v.8s-.8.2-1.6.2c-1.4.1-2.3-.2-2.8-.6V17h2.9c1.1 0 2-.9 2-2V5h-2.9z\"\n })));\n}\nexport default SvgJcb;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDiscover(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 54 36\",\n overflow: \"visible\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M5.5 35.5c-2.8 0-5-2.3-5-5v-25c0-2.8 2.3-5 5-5h42.9c2.8 0 5 2.3 5 5v24.9c0 2.8-2.3 5-5 5H5.5z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M48.5 1C51 1 53 3 53 5.5v24.9c0 2.5-2 4.5-4.5 4.5h-43C3 35 1 33 1 30.5v-25C1 3 3 1 5.5 1h43m0-1h-43C2.5 0 0 2.5 0 5.5v24.9C0 33.5 2.5 36 5.5 36h42.9c3.1 0 5.5-2.5 5.5-5.5v-25c.1-3-2.4-5.5-5.4-5.5z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231F20\",\n d: \"M5.4 14.1H3.2v7.7h2.2c1.2 0 2-.3 2.7-.9.9-.7 1.4-1.8 1.4-3 .1-2.2-1.6-3.8-4.1-3.8zm1.8 5.8c-.5.4-1.1.6-2.1.6h-.4v-5.1h.4c1 0 1.6.2 2.1.6.5.5.8 1.2.8 2 0 .7-.3 1.5-.8 1.9zM10.3 14.1h1.5v7.7h-1.5zM15.4 17.1c-.9-.3-1.2-.6-1.2-1 0-.5.5-.9 1.1-.9.4 0 .8.2 1.2.6l.8-1c-.6-.5-1.3-.8-2.2-.8-1.4 0-2.4 1-2.4 2.2 0 1.1.5 1.6 1.9 2.1.6.2.9.4 1 .4.3.2.4.5.4.8 0 .6-.5 1.1-1.2 1.1s-1.3-.4-1.6-1l-1 .9c.7 1 1.5 1.5 2.7 1.5 1.6 0 2.7-1 2.7-2.5.1-1.2-.5-1.8-2.2-2.4zM18.1 18c0 2.3 1.8 4 4.1 4 .6 0 1.2-.1 1.9-.4v-1.8c-.6.6-1.1.8-1.8.8-1.5 0-2.6-1.1-2.6-2.7 0-1.5 1.1-2.6 2.5-2.6.7 0 1.3.3 1.9.9v-1.8c-.7-.3-1.2-.5-1.8-.5-2.4.1-4.2 1.8-4.2 4.1zM36 19.3l-2.1-5.2h-1.6l3.2 7.9h.9l3.3-7.9h-1.6zM40.4 21.8h4.2v-1.3h-2.7v-2.1h2.6v-1.3h-2.6v-1.7h2.7v-1.3h-4.2zM50.6 16.4c0-1.4-1-2.3-2.7-2.3h-2.2v7.7h1.5v-3.1h.2l2.1 3.1h1.8l-2.4-3.2c1-.2 1.7-1 1.7-2.2zm-3.1 1.3h-.4v-2.3h.5c.9 0 1.4.4 1.4 1.1 0 .8-.5 1.2-1.5 1.2z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n transform: \"rotate(-80.781 28.656 18)\",\n fill: \"#E16F27\",\n cx: 28.7,\n cy: 18,\n r: 4.1\n }))));\n}\nexport default SvgDiscover;","var _path, _path2, _path3, _path4, _path5, _g, _path6, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgDiscoverV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 0H4a4 4 0 00-4 4v24a4 4 0 004 4h32a4 4 0 004-4V4a4 4 0 00-4-4z\",\n fill: \"#EC6B29\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 .5h18.5a15 15 0 0115 15v1a15 15 0 01-15 15H4A3.5 3.5 0 01.5 28V4A3.5 3.5 0 014 .5z\",\n fill: \"#fff\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.606 16.197a2.548 2.548 0 102.548-2.548 2.555 2.555 0 00-2.548 2.548z\",\n fill: \"url(#discover-v2_svg__paint0_linear_136_1967)\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.606 16.197a2.548 2.548 0 102.548-2.548 2.555 2.555 0 00-2.548 2.548z\",\n fill: \"url(#discover-v2_svg__paint1_linear_136_1967)\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"discover-v2_svg__a\",\n style: {\n maskType: \"luminance\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 17,\n y: 13,\n width: 6,\n height: 6\n }, _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.606 16.198a2.548 2.548 0 102.548-2.548 2.555 2.555 0 00-2.548 2.548z\",\n fill: \"#fff\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#discover-v2_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.182 16.792a3.329 3.329 0 106.657-.024 3.329 3.329 0 00-6.657.024z\",\n fill: \"url(#discover-v2_svg__paint2_radial_136_1967)\"\n }))), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.982 18.727h-.5l-2.047-4.913h1.025l1.284 3.216 1.3-3.216h1.018l-2.08 4.911v.002zm-13.349-.008a1.867 1.867 0 01-1.667-.912l.607-.58a1.115 1.115 0 001.025.64.682.682 0 00.73-.676.574.574 0 00-.283-.5 4.1 4.1 0 00-.65-.27c-.887-.319-1.186-.65-1.186-1.314a1.413 1.413 0 011.504-1.372 2.08 2.08 0 011.412.532l-.49.64a.973.973 0 00-.759-.39c-.4 0-.7.23-.7.532 0 .257.171.4.731.6 1.06.388 1.384.74 1.384 1.5a1.548 1.548 0 01-1.658 1.57zm4.491-.012a2.492 2.492 0 01-2.342-3.46 2.46 2.46 0 01.554-.809 2.576 2.576 0 011.813-.73c.404-.003.802.098 1.156.293v1.1a1.57 1.57 0 00-2.752 1.106 1.562 1.562 0 001.616 1.65 1.51 1.51 0 001.136-.524v1.1a2.655 2.655 0 01-1.18.274zm15.582-.1h-.933v-4.793h1.388c1.082 0 1.7.516 1.7 1.414a1.276 1.276 0 01-1.1 1.36l1.521 2.014H33.13l-1.3-1.922h-.124v1.927zm0-4.038v1.45h.276c.6 0 .918-.255.918-.739 0-.468-.312-.713-.9-.713l-.294.002zm-1.556 4.038h-2.668v-4.793h2.664v.81h-1.723v1.064h1.66v.81h-1.656v1.3h1.723v.81zm-20.539 0h-.938v-4.793h.938v4.793zm-3.96 0H4.281v-4.793h1.376a2.388 2.388 0 012.585 2.4 2.42 2.42 0 01-.874 1.84 2.523 2.523 0 01-1.719.553zm-.432-3.983v3.17h.251c.462.043.923-.096 1.284-.387a1.635 1.635 0 00.52-1.2 1.6 1.6 0 00-.519-1.192 1.724 1.724 0 00-1.285-.39h-.25z\",\n fill: \"#261F20\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"discover-v2_svg__paint0_linear_136_1967\",\n x1: 21.51,\n y1: 352.553,\n x2: 18.809,\n y2: 348.237,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F59F00\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.193,\n stopColor: \"#F49B00\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.367,\n stopColor: \"#F29101\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.496,\n stopColor: \"#F08302\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.598,\n stopColor: \"#EE7905\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.759,\n stopColor: \"#EC7008\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#EC6D09\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"discover-v2_svg__paint1_linear_136_1967\",\n x1: 21.51,\n y1: 352.553,\n x2: 18.809,\n y2: 348.237,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F3941E\",\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.204,\n stopColor: \"#F67B17\",\n stopOpacity: 0.243\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.495,\n stopColor: \"#FA590D\",\n stopOpacity: 0.565\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.733,\n stopColor: \"#FD4006\",\n stopOpacity: 0.8\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.908,\n stopColor: \"#FE3102\",\n stopOpacity: 0.945\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF2B00\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"discover-v2_svg__paint2_radial_136_1967\",\n cx: 0,\n cy: 0,\n r: 1,\n gradientUnits: \"userSpaceOnUse\",\n gradientTransform: \"matrix(3.32233 0 0 3.32235 20.41 15.914)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F3941E\",\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.483,\n stopColor: \"#E98C1C\",\n stopOpacity: 0.051\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.698,\n stopColor: \"#C57217\",\n stopOpacity: 0.227\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.859,\n stopColor: \"#87450E\",\n stopOpacity: 0.533\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.993,\n stopColor: \"#2F0401\",\n stopOpacity: 0.969\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#290000\"\n })))));\n}\nexport default SvgDiscoverV2;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPaypalLogo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#paypal-logo_svg__clip0_974_23618)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1 0H3.9A3.9 3.9 0 000 3.9v18.2A3.9 3.9 0 003.9 26h18.2a3.9 3.9 0 003.9-3.9V3.9A3.9 3.9 0 0022.1 0z\",\n fill: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.145 9.384L9.176 20.262H5.52a.43.43 0 01-.406-.508L7.55 4.316a.712.712 0 01.711-.609h6.195c4.266.152 5.434 2.336 4.672 5.688l.016-.01z\",\n fill: \"#002C8A\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.307 8.379c1.524.812 1.88 2.336 1.371 4.367-.66 2.996-2.64 4.266-5.535 4.316l-.812.051c-.305 0-.508.203-.559.508l-.66 4.012a.712.712 0 01-.711.61H9.354a.43.43 0 01-.406-.509l1.117-7.261c.05-.254 9.242-6.094 9.242-6.094z\",\n fill: \"#009BE1\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.004 14.828l1.016-6.45a.711.711 0 01.66-.558h4.875c1.168 0 2.03.203 2.742.559-.254 2.234-1.32 5.84-6.5 5.941h-2.235c-.253 0-.507.203-.558.508z\",\n fill: \"#001F6B\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"paypal-logo_svg__clip0_974_23618\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h26v26H0z\"\n })))));\n}\nexport default SvgPaypalLogo;","var _path, _path2, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPaypalLogoV2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 32,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 0H4a4 4 0 00-4 4v24a4 4 0 004 4h32a4 4 0 004-4V4a4 4 0 00-4-4z\",\n fill: \"#fff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 .25H4A3.75 3.75 0 00.25 4v24A3.75 3.75 0 004 31.75h32A3.75 3.75 0 0039.75 28V4A3.75 3.75 0 0036 .25z\",\n stroke: \"#DDD\",\n strokeWidth: 0.5\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.688 10.25a.577.577 0 00-.57.487l-.945 6a.575.575 0 01.569-.487h2.772a5.662 5.662 0 005.59-4.793 4.63 4.63 0 00.055-.622 5.263 5.263 0 00-2.455-.584l-5.016-.001z\",\n fill: \"#001C64\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.158 10.833a4.627 4.627 0 01-.055.622 5.662 5.662 0 01-5.59 4.793H17.74a.576.576 0 00-.57.487l-.87 5.513-.544 3.459a.468.468 0 00.462.541h3.009a.576.576 0 00.569-.487l.793-5.027a.577.577 0 01.57-.487h1.772a5.661 5.661 0 005.59-4.793 4.393 4.393 0 00-2.364-4.621z\",\n fill: \"#0070E0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.269 6.25a.576.576 0 00-.57.486l-2.36 14.972a.47.47 0 00.463.541h3.5l.869-5.513.946-6a.577.577 0 01.569-.487h5.016a5.263 5.263 0 012.454.584 4.62 4.62 0 00-4.872-4.584l-6.015.001z\",\n fill: \"#003087\"\n }))));\n}\nexport default SvgPaypalLogoV2;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgCardDefault(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n baseProfile: \"tiny\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 28 22\",\n overflow: \"visible\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"evenodd\",\n fill: \"#999\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.8 0H3.2C1.4 0 0 1.4 0 3.2V5h28V3.2C28 1.4 26.6 0 24.8 0zM0 18.8C0 20.6 1.4 22 3.2 22h21.7c1.7 0 3.2-1.4 3.2-3.2V8H0v10.8zm21-3.2c0-.3.3-.6.6-.6h2.8c.3 0 .6.3.6.6v2.8c0 .3-.3.6-.6.6h-2.8c-.3 0-.6-.3-.6-.6v-2.8z\"\n }))));\n}\nexport default SvgCardDefault;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgGooglePlay(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#google-play_svg__clip0_988_24044)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#32BBFF\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.417 8.918C16.397 7.228 11.55 4.516 4.03.305A1.813 1.813 0 002.436.097l12.9 12.901 4.081-4.08z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.436.094a1.814 1.814 0 00-1.24 1.73v22.342a1.814 1.814 0 001.24 1.73l12.9-12.901L2.437.094zM15.336 13l-12.9 12.901a1.794 1.794 0 001.594-.208 10851.28 10851.28 0 0115.14-8.468l.25-.14L15.337 13z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.196 13v11.17a1.814 1.814 0 001.24 1.731L15.335 13H1.197z\",\n fill: \"#2C9FD9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.03.306A1.819 1.819 0 002.16.216l12.98 12.979 4.276-4.277C16.397 7.23 11.549 4.516 4.03.306z\",\n fill: \"#29CC5E\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.14 12.805L2.162 25.785a1.806 1.806 0 001.869-.092c7.292-4.083 12.085-6.764 15.14-8.467l.25-.141-4.28-4.28z\",\n fill: \"#D93F21\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.804 13.002a1.81 1.81 0 00-.931-1.59l-4.707-2.63-4.22 4.22 4.225 4.226c3.51-1.971 4.702-2.636 4.702-2.636a1.81 1.81 0 00.931-1.59z\",\n fill: \"#FFD500\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.873 14.59a1.81 1.81 0 00.931-1.59h-9.859l4.226 4.225c3.51-1.97 4.702-2.635 4.702-2.635z\",\n fill: \"#FA0\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"google-play_svg__clip0_988_24044\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h26v26H0z\"\n })))));\n}\nexport default SvgGooglePlay;","var _path, _path2, _path3, _path4, _path5, _path6, _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgItunes(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 25.995c6.94 0 12.567-5.534 12.567-12.36C25.567 6.806 19.94 1.272 13 1.272 6.06 1.273.434 6.807.434 13.634c0 6.827 5.626 12.36 12.566 12.36z\",\n fill: \"#000\",\n opacity: 0.08\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 25.574c7.18 0 13-5.725 13-12.787C26 5.725 20.18 0 13 0S0 5.725 0 12.787c0 7.062 5.82 12.787 13 12.787z\",\n fill: \"url(#itunes_svg__paint0_linear_1154_23362)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 0C5.82 0 0 5.725 0 12.787c0 7.062 5.82 12.787 13 12.787s13-5.725 13-12.787C26 5.725 20.18 0 13 0zm0 24.721C6.31 24.721.867 19.368.867 12.787.867 6.207 6.31.852 13 .852c6.69 0 12.133 5.354 12.133 11.935 0 6.58-5.443 11.934-12.133 11.934z\",\n fill: \"url(#itunes_svg__paint1_linear_1154_23362)\",\n opacity: 0.04\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 24.29c6.462 0 11.7-5.153 11.7-11.508 0-6.356-5.238-11.509-11.7-11.509-6.461 0-11.7 5.153-11.7 11.509C1.3 19.137 6.54 24.29 13 24.29z\",\n fill: \"url(#itunes_svg__paint2_linear_1154_23362)\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 1.273c-6.462 0-11.7 5.153-11.7 11.509C1.3 19.137 6.538 24.29 13 24.29c6.462 0 11.7-5.153 11.7-11.508 0-6.356-5.238-11.509-11.7-11.509zm0 22.59c-6.223 0-11.267-4.961-11.267-11.081C1.733 6.662 6.777 1.7 13 1.7c6.222 0 11.267 4.961 11.267 11.082 0 6.12-5.045 11.082-11.267 11.082z\",\n fill: \"url(#itunes_svg__paint3_linear_1154_23362)\",\n opacity: 0.16\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 0C5.82 0 0 5.725 0 12.787c0 7.062 5.82 12.787 13 12.787s13-5.725 13-12.787C26 5.725 20.18 0 13 0zm0 25.148C6.06 25.148.433 19.613.433 12.787.433 5.96 6.06.427 13 .427s12.567 5.533 12.567 12.36c0 6.826-5.627 12.36-12.567 12.36z\",\n fill: \"#000\",\n opacity: 0.16\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.9\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.983 9.797a.212.212 0 00-.128.385l4.842 3.492 1.295-3.877H4.983z\",\n fill: \"url(#itunes_svg__paint4_linear_1154_23362)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.81 19.326a.21.21 0 00.08.239.22.22 0 00.255 0L13 16.061 9.697 13.68 7.81 19.326z\",\n fill: \"url(#itunes_svg__paint5_linear_1154_23362)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.855 19.564a.22.22 0 00.255 0 .21.21 0 00.079-.238l-1.887-5.646L13 16.062l4.856 3.502z\",\n fill: \"url(#itunes_svg__paint6_linear_1154_23362)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.206 4.405c-.059-.175-.353-.175-.412 0l-1.802 5.394h4.016l-1.802-5.394z\",\n fill: \"url(#itunes_svg__paint7_linear_1154_23362)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.223 9.944a.217.217 0 00-.206-.147h-6.01l1.296 3.877 4.842-3.492a.212.212 0 00.078-.238z\",\n fill: \"url(#itunes_svg__paint8_linear_1154_23362)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.992 9.797l-1.295 3.877L13 16.057l3.303-2.383-1.295-3.877h-4.016z\",\n fill: \"#FFFEFF\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint0_linear_1154_23362\",\n x1: 13,\n y1: 25.574,\n x2: 13,\n y2: 0,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F2F2F2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint1_linear_1154_23362\",\n x1: 13,\n y1: 25.574,\n x2: 13,\n y2: 0,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", null), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.36,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint2_linear_1154_23362\",\n x1: 13,\n y1: 24.29,\n x2: 13,\n y2: 1.273,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#CB44F6\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#EB4CBD\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint3_linear_1154_23362\",\n x1: 13,\n y1: 24.29,\n x2: 13,\n y2: 1.273,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", null), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.36,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint4_linear_1154_23362\",\n x1: 10.359,\n y1: 11.74,\n x2: 4.907,\n y2: 9.874,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\",\n stopOpacity: 0.9\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint5_linear_1154_23362\",\n x1: 11.358,\n y1: 14.857,\n x2: 8.074,\n y2: 19.65,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\",\n stopOpacity: 0.9\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint6_linear_1154_23362\",\n x1: 17.907,\n y1: 19.408,\n x2: 14.728,\n y2: 14.83,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\",\n stopOpacity: 0.9\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint7_linear_1154_23362\",\n x1: 13,\n y1: 9.799,\n x2: 13,\n y2: 4.273,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\",\n stopOpacity: 0.9\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"itunes_svg__paint8_linear_1154_23362\",\n x1: 15.635,\n y1: 11.742,\n x2: 21.221,\n y2: 9.94,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\",\n stopOpacity: 0.9\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\"\n })))));\n}\nexport default SvgItunes;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgVivacomLogo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#vivacom-logo_svg__clip0_1111_23042)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.37 2.579c-.35.294-.448.571-.484.848-.23 1.73.315 3.644.927 5.143.612 1.492 1.524 3.259 2.578 4.233 1.05.974 1.716.723 2.481.066.766-.654 1.948-2.351 2.928-3.853.98-1.502 1.62-2.599 2.94-4.352 1.316-1.754 1.993-2.18 2.325-2.35.329-.166.566-.272.971-.13l-.05-.036A12.84 12.84 0 0012.993.086c-2.852 0-5.486.928-7.623 2.493z\",\n fill: \"#868484\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.184 4.592a12.856 12.856 0 00-3.107 8.403c0 7.137 5.783 12.916 12.914 12.916 7.134 0 12.917-5.78 12.917-12.916 0-3.573-1.452-6.81-3.795-9.145-.019-.02-.421-.483-1.204.208-.71.631-1.04 1.071-1.663 1.877-.626.808-2.496 3.835-4.034 6.62-1.537 2.785-2.829 5.005-3.634 5.797-.808.788-1.583 1.488-3.089.088-1.505-1.399-3.071-3.755-4.107-6.297-2.357-5.751-1.198-7.55-1.198-7.55z\",\n fill: \"#F47216\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"vivacom-logo_svg__clip0_1111_23042\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h26v26H0z\"\n })))));\n}\nexport default SvgVivacomLogo;","import React from \"react\";\nimport { sha256 } from \"js-sha256\";\n\nimport { __ } from \"./utils\";\nimport {\n STRIPE_PK,\n SAFECHARGE_MERCHANT_SITE_ID,\n SAFECHARGE_MERCHANT_ID,\n} from \"@pcloud/web-utilities/dist/config\";\nimport { signToCurrency } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\nimport { rcookie, removeCyclic } from \"@pcloud/web-utilities/dist/lib/utils\";\nimport apiConfig from \"@pcloud/web-utilities/dist/api/config.api\";\nimport { EU_LOCATIONID, US_LOCATIONID } from \"@pcloud/web-utilities/dist/config/constants\";\n\nimport diffs from \"../lib/diffs\";\n\nimport VisaSVG from \"../svg/card-logo/visa.svg\";\nimport VisaV2SVG from \"../svg/card-logo/visa-v2.svg\";\nimport MasterCardSVG from \"../svg/card-logo/mastercard.svg\";\nimport MasterCardV2SVG from \"../svg/card-logo/mastercard-v2.svg\";\n// import MaestroSVG from \"../svg/card-logo/maestro.svg\";\nimport AmexCardSVG from \"../svg/card-logo/amex.svg\";\nimport AmexCardV2SVG from \"../svg/card-logo/amex-v2.svg\";\nimport DinersCardSVG from \"../svg/card-logo/diners.svg\";\nimport DinersCardV2SVG from \"../svg/card-logo/diners-v2.svg\";\nimport JCBSVG from \"../svg/card-logo/jcb.svg\";\nimport DiscoverSVG from \"../svg/card-logo/discover.svg\";\nimport DiscoverV2SVG from \"../svg/card-logo/discover-v2.svg\";\nimport PaypalSVG from \"../svg/paypal-logo.svg\";\nimport PaypalV2SVG from \"../svg/card-logo/paypal-logo-v2.svg\";\nimport DefaultCardSVG from \"../svg/card-logo/card-default.svg\";\nimport GooglePlaySVG from \"../svg/google-play.svg\";\nimport ItunesSVG from \"../svg/itunes.svg\";\nimport VivacomSVG from \"../svg/vivacom-logo.svg\";\nimport { loadSafecharge } from \"@pcloud/web-utilities/dist/payments/insertSafechargeForm\";\n\nconst paymentApiUrls = {};\npaymentApiUrls[EU_LOCATIONID] = \"eqapayments.pcloud.com\";\npaymentApiUrls[US_LOCATIONID] = \"qabraintree.pcloud.com\";\n\nexport const getPaymentsApiUrl = () => {\n return paymentApiUrls[apiConfig.locationid];\n};\n\nlet passedOpts;\nlet errorCallback;\n\nexport function SubscriptionUpdate({\n provider,\n period,\n discountcode,\n billingAddress,\n userAuth,\n products = [],\n traffic,\n storage,\n toggleLoader,\n showPaymentError,\n providerSourceId,\n newCC,\n authorizeCard,\n isBusinessTrial = false,\n downgrade = false,\n onBraintreeCreatePayment = () => {}\n}) {\n const apiMethods = {\n stripe: \"paystripe\",\n safecharge: \"paysafecharge\",\n paypal: isBusinessTrial ? \"subscription/createbusiness\" : \"purchase/create\",\n adyen: \"payadyen\"\n };\n\n this.method = apiMethods[provider];\n this.checkout = null;\n this.safeChargeCCToken = \"\";\n this.amountToPay = 1;\n this.userTokenId = \"\";\n this.orderid = null;\n this.metapixeleventid = null;\n\n this.paymentInfo = {\n auth: userAuth,\n products: products.join(\",\"),\n period,\n discountcode\n };\n\n if (traffic !== 0) {\n this.paymentInfo.traffic = traffic;\n }\n\n if (storage !== 0) {\n this.paymentInfo.storage = storage;\n }\n\n if (downgrade) {\n this.paymentInfo.isdowngrade = 1;\n }\n\n if (rcookie(\"_fbp\")) {\n this.paymentInfo.fbp = rcookie(\"_fbp\");\n }\n\n if (rcookie(\"_fbc\")) {\n this.paymentInfo.fbc = rcookie(\"_fbc\");\n }\n\n this.errors = {\n \"1120\": __(\"discount_error_1120\"),\n \"1126\": \"Invalid usage.\",\n \"1131\": \"Please provide ‘period’.\",\n \"2247\": __(\"discount_error_2247\"),\n \"2248\": __(\"discount_error_2248\"),\n \"2249\": __(\"discount_error_2249\"),\n \"2250\": __(\"discount_error_2250\"),\n \"2252\": __(\"discount_error_2252\"),\n \"2253\": __(\"discount_error_2253\"),\n \"2256\": \"You can’t use your own referral code.\",\n \"2257\": \"You already bought this lifetime product.\",\n \"2289\": \"This custom plan can’t be bought.\",\n \"1101\": \"Invalid request.\",\n \"1056\": __(\"payment_error_1056\"),\n \"2209\": __(\"payment_error_2209\"),\n \"2215\": __(\"payment_error_2215\"),\n \"2273\": __(\"payment_method_limit_reached\"),\n \"93107\": __(\"payment_error_93107\"),\n \"93109\": __(\"payment_error_93109\"),\n \"82901\": __(\"payment_error_82901\"),\n \"92910\": __(\"payment_error_92910\"),\n \"92911\": __(\"payment_error_92911\"),\n \"93108\": __(\"payment_error_93108\"),\n \"81901\": __(\"payment_error_81901\"),\n \"81905\": __(\"payment_error_81905\"),\n \"91609\": __(\"payment_error_91609\"),\n api_connection_error: __(\"stripe_api_connection_error\"),\n api_error: __(\"stripe_api_error\"),\n authentication_error: __(\"stripe_authentication_error\"),\n invalid_request_error: __(\"stripe_invalid_request_error\"),\n rate_limit_error: __(\"stripe_rate_limit_error\"),\n invalid_number: __(\"stripe_invalid_number\"),\n invalid_expiry_month: __(\"stripe_invalid_expiry_month\"),\n invalid_expiry_year: __(\"stripe_invalid_expiry_year\"),\n invalid_cvc: __(\"stripe_invalid_cvc\"),\n incorrect_number: __(\"stripe_incorrect_number\"),\n expired_card: __(\"stripe_expired_card\"),\n incorrect_cvc: __(\"stripe_incorrect_cvc\"),\n incorrect_zip: __(\"stripe_incorrect_zip\"),\n card_declined: __(\"stripe_card_declined\"),\n processing_error: __(\"stripe_processing_error,\"),\n missing: __(\"stripe_missing\"),\n // triggered by window.sfc.createPayment in errorDescription field\n incorrect_card_number: __(\"stripe_incorrect_number\"),\n xhr_error: __(\"payment_error_1056\")\n };\n\n this.handlePaymenterror = (data) => {\n const translated = this.errors[data.reasoncode] || this.errors[data.reason] || this.errors[data.result] || this.errors[data.error] || this.errors[data.code] || this.errors[data.errorDescription];\n let message;\n if (translated) {\n message = translated;\n } else {\n if (data.reason && data.reason.indexOf(\"TRANSID\") != -1) {\n message = __(\"payment_error_unhandled\");\n } else {\n message = data.reason || data.error || data.errorDescription || data.result || data.message;\n }\n\n if (message instanceof Object) {\n message = message.message || message.code\n }\n }\n \n toggleLoader(\"hide\");\n showPaymentError(message);\n };\n\n this.onPaymentSuccess = (res, opt) => {\n if (opt.callback && typeof opt.callback == \"function\") {\n opt.callback({...res, metapixeleventid: this.metapixeleventid}, () => {}, (data) => {\n this.handlePaymenterror(data);\n });\n } else {\n toggleLoader(\"hide\", \"success\");\n }\n };\n\n this.createCardData = (\n numberProp,\n expMonthProp,\n expYearProp,\n nameProp,\n cvcProp\n ) => {\n if (newCC) {\n const forCardData = {};\n forCardData[numberProp] = newCC.cardNumber;\n forCardData[expMonthProp] = newCC.expirationMonth;\n forCardData[expYearProp] = newCC.expirationYear;\n forCardData[nameProp] = newCC.cardHolderName;\n forCardData[cvcProp] = newCC.CVV;\n return forCardData;\n }\n };\n\n this.paymentApiCall = opt => {\n toggleLoader(\"show\");\n apiCall(\n this.method,\n this.paymentInfo,\n data => {\n if (data?.eventid) {\n this.metapixeleventid = data.eventid;\n }\n\n if (\n data.redirecturl || (data.action && data.action.type === \"redirect\")\n ) {\n window.showSafeChargeError = message => {\n this.onPaymentError(message);\n };\n } else {\n this.onPaymentSuccess(data, opt);\n }\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n\n this.createStripePayment = ({ newpaymentmethod, paymentmethodid, paymentintentsecret }, opt) => {\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n let params = {};\n const self = this;\n \n // if (newpaymentmethod) {\n // params = {\n // payment_method_data: {\n // card: { token: this.paymentInfo[\"token\"] },\n // billing_details: { name: newCC && newCC.cardHolderName }\n // },\n // save_payment_method: true,\n // setup_future_usage: \"off_session\"\n // }\t\n // } \n \n if (paymentmethodid) {\n params = {\n payment_method: paymentmethodid,\n setup_future_usage: \"off_session\"\n };\n } else {\n params = { \n payment_method: {card: { token: this.paymentInfo[\"token\"] }},\n setup_future_usage: \"off_session\"\n };\n }\n\n stripe.confirmCardPayment(paymentintentsecret, params)\n .then(function(result) {\n if (result?.paymentIntent && result?.paymentIntent?.id) {\n self.metapixeleventid = sha256(result.paymentIntent.id.toString());\n }\n\n if (result.error) {\n self.handlePaymenterror(result);\n } else {\n self.onPaymentSuccess(result, opt);\n }\n });\n }\n\n this.confirmStripeCard = ({ newpaymentmethod, paymentmethodid, clientsecret }, opt) => {\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n const params = {\n payment_method: {\n card: { token: this.paymentInfo[\"token\"] }\n }\n }\t\n const self = this;\n \n if (paymentmethodid && !newCC) {\n params.payment_method = paymentmethodid;\n }\n\n stripe.confirmCardSetup(clientsecret, params)\n .then(function(result) {\n if (result?.setupIntent && result?.setupIntent?.id) {\n self.metapixeleventid = sha256(result.setupIntent.id.toString());\n }\n\n if (result?.error) {\n self.handlePaymenterror(result);\n } else if (opt.shoudUpdateDefaultSource) {\n self.updateStripeDefaultSource(result.setupIntent.payment_method, {\n refresh: false,\n callback: opt.callback\n });\n } else if (opt.paymentCallback) {\n opt.paymentCallback();\n } else {\n self.onPaymentSuccess(result, opt);\n }\n });\n }\n\n this.updateStripeSubscription = async(opt, skipModal) => {\n toggleLoader(\"show\");\n const self = this;\n\n // Wait for API to be ready to listen for user info change == successfully paid new plan.\n diffs.listen(userAuth);\n await diffs.onDiffIsReady().catch(err => console.error('Failed to create /subscribe request before payment.'));\n\n if (opt.changeCard) {\n self.paymentInfo.changecard = true;\n }\n\n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.updateStripeSubscription(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n if (newCC) {\n this.setStripePaymentSource({\n paymentCallback: () => {\n delete self.paymentInfo.token;\n this.paymentApiCall({\n callback: (res) => {\n if (res.paymentintentsecret) {\n this.createStripePayment(res, opt);\n } else {\n opt.callback(res);\n }\n }\n });\n }\n });\n } else {\n this.paymentApiCall({\n callback: (res) => {\n if (res.paymentintentsecret) {\n this.createStripePayment(res, opt);\n } else {\n opt.callback(res);\n }\n }\n });\n }\n };\n\n this.updateStripeDefaultSource = (methodid, opt) => {\n toggleLoader(\"show\");\n\n apiCall(\n \"billing/stripe/setdefaultpaymentmethod\",\n { auth: userAuth, methodid: methodid },\n res => {\n this.onPaymentSuccess(res, opt);\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n \n this.openSafechargeOrder = ({ successCallback }) => {\n if (pCloudGlobals && pCloudGlobals.apiMethod) {\n const openorderParams = authorizeCard ? {\n authorizecard: 1,\n auth: userAuth\n } : this.paymentInfo;\n\n pCloudGlobals.apiMethod('safecharge/openorder', openorderParams, data => {\n if (data.sessiontoken) {\n this.safeChargeCCToken = data.sessiontoken;\n this.userTokenId = data.usertokenid;\n this.amountToPay = data.amounttopay / 100;\n\n if (data.orderid) {\n this.orderid = data.orderid;\n }\n\n if (successCallback && typeof successCallback === \"function\") {\n successCallback(data);\n }\n }\n }, {\n errorCallback: (res) => {\n this.handlePaymenterror(res);\n },\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n })\n }\n }\n\n this.applySafechargeOrder = (opt) => {\n if (pCloudGlobals && pCloudGlobals.apiMethod) {\n pCloudGlobals.apiMethod('safecharge/applyorder', {\n auth: userAuth,\n orderid: this.orderid\n }, res => {\n // this.onPaymentSuccess(res, opt);\n opt.callback(res, () => {}, (data) => {\n this.handlePaymenterror(data);\n }, true);\n }, {\n errorCallback: (res) => {\n this.handlePaymenterror(res);\n toggleLoader(\"hide\");\n },\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n })\n }\n }\n\n this.callSafechargePayment = (opt) => {\n if (!this.safeChargeCCToken) {\n return;\n }\n const currency = sessionStorage.pclCurrency || '$';\n let billingAddressFormatted; \n \n if (billingAddress) {\n billingAddressFormatted = { ...billingAddress };\n billingAddressFormatted.country = billingAddressFormatted.country ? billingAddressFormatted.country.toUpperCase() : \"LU\";\n }\n\n const params = {\n sessionToken: this.safeChargeCCToken, //received from openOrder API \n userTokenId: this.userTokenId,\n merchantId: SAFECHARGE_MERCHANT_ID.replace('SC_TEST_MERCHANT_ID_', ''),\n merchantSiteId : SAFECHARGE_MERCHANT_SITE_ID.replace('SC_TEST_MERCHANT_ID_', ''),\n clientUniqueId: Date.now(),\n currency: signToCurrency[currency],\n amount: this.amountToPay,\n billingAddress: billingAddressFormatted,\n }\n if (newCC && SFCardNumber) {\n removeCyclic(SFCardNumber);\n params.paymentOption = SFCardNumber;\n params.cardHolderName = newCC.cardHolderName\n } else if (providerSourceId) {\n params.paymentOption = { userPaymentOptionId: providerSourceId };\n }\n \n // Safecharge don't call the new callback, but the fist one provided\n // this we updated the opts used in the original callback\n passedOpts = opt;\n errorCallback = this.handlePaymenterror;\n\n window.sfc.createPayment(params, res => {\n if (res?.transactionId) {\n this.metapixeleventid = sha256(res.transactionId.toString());\n };\n\n if (res.result === \"SUCCESS\" || res.result === \"APPROVED\") {\n this.onPaymentSuccess(res, passedOpts);\n } else {\n errorCallback(res);\n }\n });\n }\n\n this.initSafechargePayment = async(opt) => {\n const self = this;\n passedOpts = opt;\n\n const afterOpenOrder = (res) => {\n if (res.amounttopay === 0 && res.orderid && !newCC && typeof SFCardNumber === \"undefined\") {\n this.applySafechargeOrder(passedOpts);\n } else {\n if (window.sfc) {\n this.callSafechargePayment(passedOpts);\n } else {\n // Await for safecharge.js to be ready. Loaded inside insertSafechargeForm.js.\n loadSafecharge().then(() => {\n this.callSafechargePayment(passedOpts)\n });\n }\n }\n }\n\n toggleLoader(\"show\");\n\n // Wait for API to be ready to listen for user info change == successfully paid new plan.\n diffs.listen(userAuth);\n await diffs.onDiffIsReady().catch(err => console.error('Failed to create /subscribe request before payment.'));\n \n if (opt.showPaymentConfirmationModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.openSafechargeOrder({\n successCallback: (res) => afterOpenOrder(res),\n });\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n } else {\n self.openSafechargeOrder({\n successCallback: (res) => afterOpenOrder(res)\n });\n }\n };\n\n this.createBraintreePayment = async (opt, skipModal) => {\n const self = this;\n onBraintreeCreatePayment();\n \n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.createBraintreePayment(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n toggleLoader(\"show\");\n\n // Wait for API to be ready to listen for user info change == successfully paid new plan.\n diffs.listen(userAuth);\n await diffs.onDiffIsReady().catch(err => console.error('Failed to create /subscribe request before payment.'));\n\n apiCall(\n this.method,\n this.paymentInfo,\n res => {\n if (self.checkout) {\n self.checkout.teardown(() => {\n self.checkout = null;\n })\n }\n\n if (res?.transactionid) {\n this.metapixeleventid = `${res.transactionid}-${apiConfig.locationid}`\n }\n this.onPaymentSuccess(res, opt);\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n apiServer: getPaymentsApiUrl(),\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n\n this.initBrainTree = (token, opt) => {\n const self = this;\n\n braintree.client.create({\n authorization: token\n }, function (clientErr, clientInstance) {\n \n // Stop if there was a problem creating the client.\n // This could happen if there is a network error or if the authorization\n // is invalid.\n if (clientErr) {\n console.error('Error creating client:', clientErr);\n return;\n }\n \n // Create a PayPal Checkout component.\n braintree.paypalCheckout.create({\n client: clientInstance\n }, function (paypalCheckoutErr, paypalCheckoutInstance) {\n paypalCheckoutInstance.loadPayPalSDK({\n vault: true\n }, function () {\n paypal.Buttons({\n fundingSource: paypal.FUNDING.PAYPAL,\n style: {\n color: opt.color || 'blue',\n label: opt.label || ''\n },\n createBillingAgreement: function () {\n return paypalCheckoutInstance.createPayment({\n flow: 'vault', // Required\n });\n },\n \n onApprove: function (data, actions) {\n toggleLoader(\"show\");\n return paypalCheckoutInstance.tokenizePayment(data, function (err, payload) {\n if (payload.nonce) {\n self.paymentInfo[\"nonce\"] = payload.nonce;\n if (isBusinessTrial) {\n opt.callback({ nonce: payload.nonce })\n } else {\n self.createBraintreePayment(opt);\n }\n } else {\n showPaymentError(\n __(\n \"something_went_wrong_refresh_and_try_again\",\n \"Something went wrong. Refresh and try again.\"\n )\n );\n }\n // Submit `payload.nonce` to your server\n });\n },\n \n onCancel: function (data) {\n toggleLoader(\"hide\");\n },\n \n onError: function (err) {\n console.error('PayPal error', err);\n toggleLoader(\"hide\");\n }\n }).render('#paypal-button').then(function () {\n // The PayPal button will be rendered in an html element with the ID\n // `paypal-button`. This function will be called when the PayPal button\n // is set up and ready to be used\n if (opt.onReady) {\n opt.onReady();\n }\n });\n \n });\n });\n });\n };\n\n this.getTokenBraintree = (opt) => {\n // toggleLoader(\"show\");\n apiCall(\n \"./token/get\",\n {auth: userAuth},\n res => {\n this.initBrainTree(res.token, opt);\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n apiServer: getPaymentsApiUrl(),\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n };\n\n this.setupIntent = (token, { callback }) => {\n apiCall(\n \"billing/stripe/setupintent\",\n { auth: userAuth },\n res => {\n if (callback && typeof callback === \"function\") {\n if (res.setupIntent && res.setupIntent.payment_method) {\n this.paymentInfo.paymentmethodid = res.setupresult.setupIntent.payment_method;\n }\n callback(res);\n }\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n }\n\n this.setStripePaymentSource = (opt) => {\n toggleLoader(\"show\");\n const self = this;\n opt.shoudUpdateDefaultSource = typeof opt.shoudUpdateDefaultSource !== \"undefined\" ? opt.shoudUpdateDefaultSource : false;\n\n if (newCC) {\n Stripe.setPublishableKey(STRIPE_PK);\n const cardData = this.createCardData(\"number\", \"exp_month\", \"exp_year\", \"name\", \"cvc\");\n\n Stripe.card.createToken(cardData, (status, tokenInfo) => {\n if (status == 200) {\n self.paymentInfo[\"token\"] = tokenInfo.id;\n self.setupIntent(tokenInfo, {\n callback: (res) => {\n if (res.clientsecret) {\n self.confirmStripeCard(res, opt);\n } else {\n opt.callback(res);\n }\n }\n });\n } else {\n toggleLoader(\"hide\");\n self.handlePaymenterror(tokenInfo.error);\n }\n });\n }\n }\n\n this.createAlipayPayment = (opt, skipModal) => {\n toggleLoader(\"show\");\n this.paymentInfo.instrument = \"alipay\";\n const self = this;\n\n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.createAlipayPayment(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n apiCall(\n \"paystripe\",\n self.paymentInfo,\n data => {\n const {paymentintentsecret} = data;\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n stripe.confirmAlipayPayment(paymentintentsecret, {\n // Return URL where the customer should be redirected to after payment\n return_url: window.location.href,\n }).then((result) => {\n if (result.error) {\n self.handlePaymenterror(result);\n }\n });\n },\n ret => {\n self.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n }\n\n this.createWechatPayment = (opt, skipModal) => {\n toggleLoader(\"show\");\n this.paymentInfo.instrument = \"wechat\";\n const self = this;\n\n if (opt.showPaymentConfirmationModal && !skipModal) {\n modalManager.open('PaymentConfirmationModal', {\n handleButtonClick: () => {\n self.createWechatPayment(opt, true);\n },\n handleModalClose: () => {\n toggleLoader(\"hide\");\n }\n });\n\n return;\n }\n\n apiCall(\n \"paystripe\",\n this.paymentInfo,\n data => {\n const {paymentintentsecret} = data;\n const stripe = Stripe('pk_test_rqxCBCYuPZVO5zmwMeD0yEvk');\n\n stripe.confirmWechatPayPayment(\n paymentintentsecret,\n {\n payment_method_options: {\n wechat_pay: {\n client: 'web',\n }\n }\n }, {\n handleActions: false\n }).then(({error, paymentIntent}) => {\n if (error) {\n this.handlePaymenterror(result);\n } else if (paymentIntent && paymentIntent.status === 'requires_action') {\n if (paymentIntent && paymentIntent.next_action) {\n opt.onNextAction(paymentIntent.next_action.wechat_pay_display_qr_code.image_url_png);\n }\n } \n })\n },\n ret => {\n this.handlePaymenterror(ret);\n },\n {\n onXhrError: (xhr, status, error) => {\n this.handlePaymenterror({reasoncode: \"xhr_error\", xhrError: {error: xhr, status, error}});\n }\n }\n );\n }\n}\n\nexport const providers = {\n\t1: {name: 'iTunes', short_name: 'itunes', type: 'mobile'},\n\t2: {name: 'PayPal', short_name: 'paypal', type: 'paypal'}, // Old Paypal\n\t3: {name: 'Bitcoin', short_name: 'bitcoin', type: 'bitcoin'},\n\t4: {name: 'Authorize', short_name: 'authorize', type: 'authorize'},\n\t5: {name: 'Vivacom', short_name: 'vivacom', type: 'vivacom'},\n\t6: {name: 'Bank', short_name: 'bank', type: 'bank'},\n\t7: {name: 'PaymentWall', short_name: 'paymentwall', type: 'paymentwall'},\n\t8: {name: 'SEP', short_name: 'sep', type: 'sep'},\n\t9: {name: 'Stripe', short_name: 'stripe', type: 'ccard'},\n\t11: {name: 'PayPal', short_name: 'paypal', type: 'paypal'}, // BrainTree\n\t12: {name: 'Google Play', short_name: 'googleplay', type: 'mobile'},\n\t13: {name: 'SafeCharge', short_name: 'safecharge', type: 'ccard'},\n 15: {name: 'Vivacom', short_name: 'vivacom', type: 'vivacom'},\n 16: {name: 'Adyen', short_name: 'adyen', type: 'ccard'}\n};\n\nexport const internalProviders = [\n {id: 11, short_name: 'paypal'},\n {id: 9, short_name: 'stripe'},\n {id: 13, short_name: 'safecharge'},\n];\n\nexport const isInternalPaymentProvider = providerId => internalProviders.find((internalProvider) => internalProvider.id === providerId);\n\nexport const getPurchaseData = () => {\n\tif (typeof(Storage) === 'undefined' || typeof(localStorage) === 'undefined' || localStorage === null) {\n\t\treturn [];\n }\n \n const purchases = localStorage.getItem(\"purchases\");\n \n\tif (purchases) {\n\t\treturn JSON.parse(purchases);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexport const storePurchaseDataLocally = (purchaseData) => {\n\tif (typeof(Storage) === 'undefined' || typeof(localStorage) === 'undefined' || localStorage === null) {\n\t\treturn;\n }\n \n\tconst purchases = getPurchaseData();\n\n\tpurchases.push(purchaseData);\n\n\tlocalStorage.setItem(\"purchases\", JSON.stringify(purchases));\n}\n\nexport const getCreditCardInfo = (paymentSource) => {\n if (!paymentSource) {\n return null;\n }\n \n const paymentProvider = paymentSource.safecharge ? \"safecharge\" : (paymentSource.stripe ? \"stripe\" : null);\n \n if (paymentProvider === null) {\n return null;\n }\n\n const creditCardInfo = paymentSource[paymentProvider].sources && paymentSource[paymentProvider].sources.length > 0 && \n // Find default source\n paymentSource[paymentProvider].sources.find(pSource => pSource.isdefault) && \n // If no default is set -> use the last in the array.\n paymentSource[paymentProvider].sources[paymentSource[paymentProvider].sources.length - 1];\n\n return creditCardInfo;\n};\n\nexport const brandIcons = {\n visa: ,\n visa_v2: ,\n master_card: ,\n mastercard: ,\n mastercard_v2: ,\n // maestro: ,\n american_express: ,\n americanexpress: ,\n americanexpress_v2: ,\n dinersclub: ,\n diners_club: ,\n dinersclub_v2: ,\n discover: ,\n discover_v2: ,\n jcb: ,\n paypal: ,\n paypal_v2: ,\n default: ,\n googleplay: ,\n itunes: ,\n vivacom: \n};\n\nexport const renderBillingProviderOrPaymentSourceIcon = (paymentProvider, paymentSource = null) => {\n let brandIcon = brandIcons[\"default\"];\n if (paymentSource && (paymentProvider.short_name === \"safecharge\" || paymentProvider.short_name === \"stripe\")) {\n // Safecharge, paypal or stripe.\n const creditCardInfo = getCreditCardInfo(paymentSource);\n brandIcon = brandIcons[creditCardInfo && creditCardInfo.brand ? creditCardInfo.brand.toLowerCase() : \"default\"] || brandIcon;\n } else if (paymentProvider.short_name === \"paypal\") {\n brandIcon = brandIcons[\"paypal\"];\n } else {\n // For example vivacom, googleplay or itunes...\n brandIcon = brandIcons[paymentProvider.short_name] || brandIcon;\n }\n\n return brandIcon;\n};","//@flow\n\nimport React, { useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\nimport Modal from \"@pcloud/web-utilities/dist/resources/components/Modal\";\nimport { onMouseOut, __ } from \"../../../lib/utils\";\nimport { setcookie, rcookie } from \"@pcloud/web-utilities/dist/lib/utils\";\n\ntype Props = {\n handleButtonClick: () => void,\n openedExitIntentCookieId: string,\n gaKey: string,\n title: string,\n description: string,\n ctaText: string\n};\nconst SimpleExitIntentModal = ({ \n handleButtonClick = () => {}, \n openedExitIntentCookieId = \"openedExitIntentModal\", \n gaKey = \"exit-intent\",\n title = \"\",\n description = \"\",\n ctaText = \"\"\n}: Props) => {\n const [showModal, setShowModal] = useState(false);\n const modalCustomStyle = {\n \"display\": \"flex\",\n \"alignItems\": \"center\",\n // \"justifyContent\": \"center\"\n };\n\n useEffect(() => {\n const timer = setTimeout(setMouseOutEvent, 5000);\n\n return () => {\n clearTimeout(timer)\n document.onmouseout = () => {};\n };\n }, []);\n\n const handleMouseOut = (event) => {\n onMouseOut(event, () => {\n if (!showModal && !rcookie(openedExitIntentCookieId)) {\n setShowModal(true);\n document.getElementsByTagName(\"BODY\")[0].classList.add(\"overlayed\");\n setcookie(openedExitIntentCookieId, 'true', 1);\n }\n });\n };\n\n const setMouseOutEvent = () => {\n document.onmouseout = handleMouseOut;\n };\n\n const closeModal = () => {\n setShowModal(false);\n document.getElementsByTagName(\"BODY\")[0].classList.remove(\"overlayed\");\n };\n\n const handleClick = () => {\n closeModal();\n handleButtonClick();\n };\n\n return (\n \n \n {title}\n {description}\n {ctaText}\n \n \n \n );\n};\n\nexport default SimpleExitIntentModal;\n\nconst modalWrapImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + 'images/2023-Exit-intent-popup.png';\nconst modalWrapImgHiDpi = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + 'images/2023-Exit-intent-popup@2x.png';\nconst ModalWrap = styled.div`\n width: 100%;\n min-width: 780px;\n height: 420px;\n max-height: 420px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n background-clip: padding-box;\n margin: 0 auto;\n padding: 0 80px;\n border-radius: 20px;\n box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.25);\n background-color: #01131d;\n background-size: 582px 420px;\n background-repeat: no-repeat;\n background-position: right;\n background-image: url(${modalWrapImg});\n ${hiDPI(1.5)} {\n background-image: url(${modalWrapImgHiDpi});\n }\n`;\n\nconst ovalModalCloseImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + 'images/exit-intent-modal-close.png';\nexport const OvalModalClose = styled.div`\n position: fixed;\n right: 22px;\n top: 12px;\n background-size: 24px 24px;\n background-repeat: no-repeat;\n background-position: center;\n background-image: url(${ovalModalCloseImg});\n padding: 3px;\n box-sizing: border-box;\n cursor: pointer;\n z-index: 41;\n width: 30px;\n height: 30px;\n`;\n\nconst ModalTitle = styled.div`\n font-size: 18px;\n text-align: left;\n color: #17bed0;\n text-transform: uppercase;\n`;\n\nconst ModalDescription = styled.div`\n max-width: 294px;\n font-size: 28px;\n text-align: left;\n color: #ffffff;\n text-transform: uppercase;\n font-weight: 300;\n margin-top: 4px;\n`;\n\nconst ModalButton = styled.div`\n min-width: 100px;\n padding: 0 32px;\n float: left;\n height: 48px;\n font-size: 16px;\n letter-spacing: 0.32px;\n border-radius: 8px;\n background-color: #746de4;\n background-image: linear-gradient(105deg,#17bed0 0%,#746de4 96%);\n color: #ffffff;\n text-transform: uppercase;\n line-height: 48px;\n margin-top: 40px;\n cursor: pointer;\n`;\n","//@flow\n\nimport React, { Fragment, useState, useEffect, useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport Componentify from \"react-componentify\";\nimport reactStringReplace from \"react-string-replace\";\n\nimport type {\n PeriodType,\n Userinfo,\n DisabledPlan,\n ColorType,\n CurrencyType\n} from \"../../../lib/types/dataTypes.components\";\n\nimport { linkConverter } from \"@pcloud/web-utilities/dist/lib/componentifyConverters\";\n\nimport {\n CRYPTO_PLAN_ID,\n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n CUSTOM_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY4TB_PLAN_ID,\n FAMILY10TB_PLAN_ID,\n FAMILY_CUSTOM_PLAN_ID\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport { __ } from \"../../../lib/utils\";\n\nimport { PlanType } from \"../../../lib/types/PlanType\";\n\nimport Plans from \"./Plans\";\nimport MoreOptions from \"./MoreOptions\";\nimport ExplorePcloud from \"./ExplorePcloud\";\nimport UserPlanInfo from \"./UserPlanInfo\";\nimport { PriceError } from \"./Style\";\n\nimport TimerDiscountModal from \"../../ModalManager/StaticContainers/TimerDiscountModal\";\nimport ImagePreviewModalSimple from \"../../ModalManager/StaticContainers/ImagePreviewModalSimple\";\nimport { VIVACOM_128GB_PLAN_ID, VIVACOM_1TB_PLAN_ID, VIVACOM_500GB_PLAN_ID } from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport FeaturesSection from \"../../FeaturesSection\";\nimport PremiumPlanFeatures from \"../../PremiumPlanFeatures\";\nimport LogoBar from \"../../LogoBar\";\nimport FamilyOfferSection from \"../../FamilyOfferSection\";\nimport PaymentLogos from \"../../PaymentLogos\";\nimport GogoMedal from \"../../../../new_site/images/plans/gogo-medal.svg\";\nimport RightArrowIconSVG from \"../../../../new_site/images/cyan-right-arrow.svg\";\nimport ChevronTop from \"../../../../new_site/images/plans/chevron-top.svg\";\nimport ChevronBottom from \"../../../../new_site/images/plans/chevron-bottom.svg\";\nimport CheckStampIcon from \"../../../svg/check-stamp-icon.svg\";\nimport { brandIcons } from \"../../../lib/payments\";\n\nimport SimpleExitIntentModal from \"../../ModalManager/StaticContainers/SimpleExitIntentModal\";\nimport PlansTypeComponent from \"../styles/PlansTypeComponent\";\n\ntype Props = {\n loadingPlans: boolean,\n loadingPlansError: string | null,\n currency: CurrencyType,\n user: Userinfo | null,\n disabled: DisabledPlan | null,\n plans: {[period: PeriodType]: [PlanType]},\n hiddenPeriods: [PeriodType],\n chosenPeriod: PeriodType,\n switchToMonthlyPlans: () => void,\n setChosenPeriod: (chosenPeriod: PeriodType) => void,\n setDiscount: (discount: string) => void,\n discount: string,\n hidePlansFooter: boolean,\n hideVatIncluded: boolean,\n hideExitIntent: boolean,\n hidePageTitle: boolean,\n hideFeaturesForAll: boolean,\n hideUsedByBar: boolean,\n hideFamilySection: boolean,\n hideTrafficSection: boolean,\n hidePaymentLogos: boolean,\n showComparePrices: boolean,\n showBestPriceByRandomGirl: boolean,\n country: string,\n checkoutPageLink: string,\n familyPageLink: string,\n trafficPageLink: string,\n downgrade: boolean,\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n plansVersion: string,\n showPlanDescriptionText: boolean,\n hideJapanesePartner: boolean,\n showTextUnderPrices: boolean,\n maxNumberOfFeaturesToShow: number, // -1 -> no limit\n periodsMainColor: ColorType,\n periodsBackgroundColor: string,\n defaultPeriod: PeriodType,\n analytics: {\n category: string,\n label: string,\n pageTitle: string\n },\n switchPlansFromSamePeriodByTabs: boolean,\n onTabSwitch: (plans: [PlanType], period: PeriodType, currency: CurrencyType) => void,\n tabsTitle: string,\n subtitlePosition: \"top\" | \"bottom\",\n showSaveLabel: boolean,\n plansContainerBackground: string,\n topHeadlineBackground: string\n};\n\nconst PricingPageDefaultUI = ({\n loadingPlans,\n loadingPlansError,\n currency,\n user,\n plans,\n hiddenPeriods,\n chosenPeriod,\n switchToMonthlyPlans,\n setChosenPeriod,\n setDiscount,\n discount,\n hidePlansFooter,\n hideVatIncluded,\n hideExitIntent,\n hidePageTitle,\n hideFeaturesForAll,\n hideUsedByBar = true,\n hideFamilySection = true,\n hideTrafficSection = true,\n hidePaymentLogos,\n hideDiscountPercentage,\n showComparePrices,\n showBestPriceByRandomGirl,\n country,\n checkoutPageLink,\n familyPageLink,\n trafficPageLink,\n downgrade,\n plansType,\n plansVersion = null,\n showPlanDescriptionText = false,\n hideJapanesePartner = false,\n showTextUnderPrices = true,\n maxNumberOfFeaturesToShow = 2,\n periodsMainColor = \"cyan\",\n periodsBackgroundColor = \"#ebebeb\",\n defaultPeriod = \"lifetime\",\n analytics = null,\n switchPlansFromSamePeriodByTabs = false,\n onTabSwitch = null,\n tabsTitle = null,\n layout = \"default\",\n subtitlePosition,\n showSaveLabel,\n plansContainerBackground = null,\n topHeadlineBackground = null\n}: Props) => {\n const [isMobile, setIsMobile] = useState(window.innerWidth <= 768);\n const [imagePreviewModalSrc, setImagePreviewModalSrc] = useState();\n const [showMoreJaCloudAward, setShowMoreJaCloudAward] = useState(false);\n\n const userWithPlanEligibleForTrafficPlan = useMemo(() => {\n const eligibleForTrafficPlans = [\n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY4TB_PLAN_ID,\n FAMILY10TB_PLAN_ID,\n FAMILY_CUSTOM_PLAN_ID,\n CUSTOM_PLAN_ID,\n VIVACOM_128GB_PLAN_ID,\n VIVACOM_500GB_PLAN_ID,\n VIVACOM_1TB_PLAN_ID\n ];\n\n return user && user.plan && eligibleForTrafficPlans.indexOf(user.plan) !== -1\n }, [user]);\n\n const userHasStoragePlan = useMemo(() => user && user.premium, [user]);\n\n useEffect(() => {\n window.addEventListener('resize', onResizeSetIsMobile);\n\n return () => {\n window.removeEventListener('resize', onResizeSetIsMobile);\n }\n }, []);\n\n const onResizeSetIsMobile = () => {\n const newIsMobile = window.innerWidth <= 768;\n setIsMobile(newIsMobile);\n }\n \n const openRegisterModal = () => {\n openGlobalModal(\"loginorsignup\");\n };\n\n const scrollToJapaneseCertificates = () => {\n const targetElement = document.getElementById('japanese-certificates-container');\n const header = document.querySelector('header');\n \n if (targetElement && header) {\n const position = targetElement.getBoundingClientRect().top + window.scrollY - header.offsetHeight;\n window.scroll({ top: position, behavior: 'smooth' });\n }\n };\n\n const renderPageTitle = () => {\n if (hidePageTitle) {\n return;\n }\n\n let topHeadlineText = plansVersion !== \"0.0.0\" ? __(\"toggle2_pricingpage_storage\", \"Choose Your Plan\") : __(\"key_pricing_plans_individual\", \"Individual plans\");\n let topSubTitleText = plansVersion !== \"0.0.0\" ? __(\"PricingPage_SocialProof\", \"For over a decade, more than 20 million people have chosen us as their trusted cloud storage provider.\") : \"\";\n\n if (user) {\n const { business, plan } = user;\n\n if (business) {\n // We cannot be here after planVersion 1.0.0, because NoPlansInfoMessage will be shown instead.\n topHeadlineText = __(\"your_current_plan_is_pcloud_ba\", \"Your current plan is pCloud Business\");\n topSubTitleText = \"\";\n } else if (plan) {\n topHeadlineText = __(\"upgrade_your_experience\", \"Upgrade your pCloud experience\");\n topSubTitleText = \"\";\n } else if (chosenPeriod && plans[chosenPeriod].indexOf(CRYPTO_PLAN_ID) !== -1) {\n topHeadlineText = __(\"get_pcl_crypto\", \"Get pCloud Encryption\");\n topSubTitleText = \"\";\n } else if (plansVersion === \"0.0.0\") {\n topHeadlineText = __(\"choose_storage_and_price\", \"Choose your storage and price\");\n }\n }\n\n return (\n \n
\n {topHeadlineText != \"\" ? \n
{topHeadlineText}
\n : null}\n\n {topSubTitleText != \"\" ? \n
{topSubTitleText}
\n : null}\n
\n
\n );\n };\n\n const renderJapanesePartner = () => {\n const lang = currentLang;\n if ((country === \"jp\" && lang === \"en\") || lang === \"ja\") {\n return (\n \n \n \n \n \n \n \n \n \n

\n {reactStringReplace(__(\"japanese_certification_jury_prize\"), /(%link%)/g, (match, i) => (\n \n \n {__(\"japanese_certification_jury_prize_link\")}\n \n \n ))}\n

\n
\n
\n );\n }\n };\n\n const renderJapaneseCloudAward = () => {\n const lang = currentLang;\n if ((country === \"jp\" && lang === \"en\") || lang === \"ja\") {\n return (\n \n setImagePreviewModalSrc(undefined)}\n />\n {__(\"japanese_certification_jury_prize_title\")}\n \n {__('japanese_certification_jury_prize_description_short')}\n \n {showMoreJaCloudAward &&\n \n {__('japanese_certification_jury_prize_description_long')}\n \n }\n setShowMoreJaCloudAward((showMoreJaCloudAward) => !showMoreJaCloudAward)}>\n {__('Read more')} {showMoreJaCloudAward ? : }\n \n \n setImagePreviewModalSrc(\"/images/aspic-certificate.jpg\")} />\n setImagePreviewModalSrc(\"/images/aspic-certificate-accreditation.png\")} />\n \n \n );\n }\n };\n\n const renderMoreOptions = () => {\n const userHasNoStoragePlan = user && !user.plan && !user.business;\n const optionsToShow = [];\n\n if (!user || userWithPlanEligibleForTrafficPlan || userHasNoStoragePlan) {\n optionsToShow.unshift(\"traffic\");\n }\n\n if (!user || (user && !user.premiumlifetime && !user.business)) {\n optionsToShow.unshift(\"business\");\n }\n\n if (!user || (user && (!user.premiumlifetime || user.plan === FAMILY2TB_PLAN_ID) && !user.business)) {\n optionsToShow.unshift(\"family\");\n }\n\n if (optionsToShow.length) {\n return ;\n }\n\n return null;\n };\n\n const renderExitIntent = () => {\n if (hideExitIntent) {\n return null;\n }\n\n if (chosenPeriod !== \"lifetime\" && user && !user.lastsubscription && !discount) {\n return setDiscount(\"EXIT_INTENT\")} />;\n }\n\n\n if (user && (user.plan || user.business)) {\n // No need to show exit intent to user with plan or business.\n return null;\n }\n\n const handleYearExitIntentCLick = () => {\n setChosenPeriod(\"year\");\n };\n \n const pattern = /landing/i;\n if (discount && chosenPeriod !== \"year\" && !pattern.test(document.referrer)) {\n return (\n \n );\n }\n\n return null;\n };\n\n const renderPaymentLogos = () => {\n const brands = [\"visa_v2\", \"mastercard_v2\", \"americanexpress_v2\", \"paypal_v2\", \"dinersclub_v2\", \"discover_v2\"];\n\n return (\n \n \n \n {__(\"10_DAYS_MONEY_BACK\")} {__(\"secure_ssl_payment_short\")}\n \n \n {brands.map((brand, index) => {brandIcons[brand]})}\n \n \n );\n };\n\n return (\n \n {renderPageTitle()}\n\n {renderExitIntent()}\n\n {plansType === \"storage\" ? : null}\n \n {!hideJapanesePartner ?\n renderJapanesePartner()\n : null}\n\n {loadingPlansError ? {loadingPlansError} : null}\n\n \n\n {!hideVatIncluded ?\n \n
{__(\"no_vat_or_fees_included\")}!
\n {plansType === \"storage\" ?\n \n \n \n : null}\n
\n : null}\n\n {/** !!!OLDER DESIGN!!! */}\n {plansVersion === \"0.0.0\" ? \n \n {!hidePlansFooter ?\n \n {plansType === \"storage\" ? renderJapaneseCloudAward() : null}\n \n {plansType === \"storage\" ? renderMoreOptions() : null}\n \n {plansType === \"storage\" ?\n \n : null}\n \n : null}\n {!hideFeaturesForAll ?\n \n \n \n : null}\n {!hidePaymentLogos ?\n \n : null}\n \n : null}\n\n {/** NEWER DESIGN */}\n {plansVersion !== \"0.0.0\" ? \n \n {!hidePaymentLogos ?\n renderPaymentLogos() \n : null}\n\n {!hidePlansFooter ?\n \n {plansType === \"storage\" ? renderJapaneseCloudAward() : null}\n\n {/* \n {plansType === \"storage\" && plans && plans[\"month\"]?.length > 0 ?\n \n : null} \n */}\n \n : null}\n\n\n {!hidePaymentLogos && (!hideTrafficSection && userWithPlanEligibleForTrafficPlan) ? \n \n : null}\n\n {!hideTrafficSection && userWithPlanEligibleForTrafficPlan ? \n \n {__(\"pricing_traffic_option_title\", \"Link traffic\")}\n {__(\"pricing_traffic_option_description\", \"Get additional traffic for your shared links.\")}\n \n : null}\n \n {!hideFeaturesForAll && !userHasStoragePlan ?\n \n \n \n : null}\n\n {!hideUsedByBar && !userHasStoragePlan ? : null}\n\n {!hideFamilySection && !userHasStoragePlan ? \n \n \n \n : null}\n \n : null}\n
\n );\n};\n\nexport default PricingPageDefaultUI;\n\nconst TextContainer = styled.div`\n text-align: left;\n margin-left: 20px;\n\n @media (max-width: 768px) {\n text-align: center;\n }\n`;\n\nconst WhiteSectionWrapper = styled.div`\n width: 100%;\n background: #fff;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst FeaturesWrap = styled.div`\n padding: 40px 20px 40px 0px;\n position: relative;\n width: 100%;\n border-top: 1px solid #e4e4e4;\n`;\n\nconst Upgradetext = styled.div`\n margin-bottom: 5px;\n\n a {\n text-decoration: none;\n font-weight: bold;\n }\n`;\n\nconst Link = styled.span`\n color: #17bed0;\n cursor: pointer;\n text-decoration: underline;\n`;\n\nconst StyledGogoMedal = styled(GogoMedal)`\n flex-shrink: 0;\n`;\n\nconst PaymentLogosWrapper = styled.div`\n padding: 44px 0;\n background: #fff;\n`;\n\nconst PaymentLogosContainer = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-md);\n margin-bottom: var(--spaces-6);\n text-align: center;\n\n @media (max-width: 1030px) {\n max-width: var(--plan-box-max-width);\n }\n`;\n\nconst SecurePaymentsHeadline = styled.div`\n color: var(--color-base-black);\n font-size: 18px;\n font-weight: 500;\n line-height: 26px;\n`;\n\nconst PaymentBrandsIconsWrapper = styled.div`\n display: flex;\n gap: var(--spacing-md);\n margin-top: var(--spacing-sm);\n align-items: center;\n justify-content: center;\n\n @media (max-width: 768px) {\n gap: var(--spacing-sm);\n }\n`;\n\nconst PaymentBrandIcon = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n \n svg {\n height: 32px;\n }\n`;\n\nconst SeparationLine = styled.div`\n height: 0.5px;\n background-color: var(--box-border);\n width: 100%;\n max-width: 380px;\n width: calc(100% - var(--pricing-page-content-offset));\n border-radius: 0.75px;\n\n @media (max-width: 1030px) {\n max-width: var(--plan-box-max-width);\n }\n`;\n\nconst TrafficOfferWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n line-height: 22px;\n margin-bottom: var(--spaces-6);\n margin-top: var(--spacing-2xl);\n\n a {\n text-decoration: none;\n color: var(--text-link);\n font-size: 15px;\n font-weight: 400;\n\n svg {\n margin-left: var(--spacing-xs);\n position: relative;\n top: 1px;\n }\n }\n`;\n\nconst LinkHeader = styled.div`\n color: var(--color-base-black);\n font-size: 18px;\n font-weight: 500;\n`;\n","//@flow\n\nimport { \n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n CUSTOM_PLAN_ID,\n ADD_STORAGE_1COUNT_PLAN_ID,\n ADD_STORAGE_4COUNT_PLAN_ID,\n ADD_STORAGE_8COUNT_PLAN_ID,\n ADD_STORAGE_12COUNT_PLAN_ID,\n ADD_STORAGE_20COUNT_PLAN_ID,\n CUSTOM_20COUNT_PLAN_ID,\n CUSTOM_8COUNT_PLAN_ID,\n CUSTOM4TB_PLAN_ID,\n CRYPTO_PLAN_ID,\n EFH_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY_CUSTOM_2COUNT_PLAN_ID,\n FAMILY_CUSTOM_5COUNT_PLAN_ID,\n FAMILY_ADD_1COUNT_PLAN_ID,\n FAMILY_ADD_2COUNT_PLAN_ID,\n FAMILY_ADD_5COUNT_PLAN_ID,\n ADDITIONAL_TRAFFIC_ID,\n PASS_PREMIUM_PLAN_ID,\n PASS_FAMILY_PLAN_ID\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\n\nexport const STEP = \"choose-plan\";\nexport const PERIODS = [\"year\", \"lifetime\"];\nexport const PLANS = {\n month: [PREMIUM_PLAN_ID, PREMIUM_PLUS_PLAN_ID],\n year: [PREMIUM_PLAN_ID, PREMIUM_PLUS_PLAN_ID],\n lifetime: [PREMIUM_PLAN_ID, PREMIUM_PLUS_PLAN_ID]\n};\nexport const PLANS_EXTENDED = {\n month: [PREMIUM_PLAN_ID, PREMIUM_PLUS_PLAN_ID],\n year: [PREMIUM_PLAN_ID, PREMIUM_PLUS_PLAN_ID],\n lifetime: [PREMIUM_PLAN_ID, PREMIUM_PLUS_PLAN_ID, CUSTOM_20COUNT_PLAN_ID]\n};\nexport const PLANS_ADD_STORAGE = {\n month: [],\n year: [],\n lifetime: [ADD_STORAGE_1COUNT_PLAN_ID, ADD_STORAGE_4COUNT_PLAN_ID, ADD_STORAGE_20COUNT_PLAN_ID]\n};\nexport const CHOSEN_PERIOD = \"lifetime\";\nexport const CURRENCY = \"\";\nexport const PLAN_OPTIONS_PER_PERIOD = {\n month: {\n [PREMIUM_PLAN_ID]: [CRYPTO_PLAN_ID, EFH_PLAN_ID],\n [PREMIUM_PLUS_PLAN_ID]: [CRYPTO_PLAN_ID, EFH_PLAN_ID],\n [CRYPTO_PLAN_ID]: [EFH_PLAN_ID],\n [EFH_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADDITIONAL_TRAFFIC_ID]: [CRYPTO_PLAN_ID, EFH_PLAN_ID],\n [PASS_PREMIUM_PLAN_ID]: [],\n [PASS_FAMILY_PLAN_ID]: []\n },\n year: {\n [PREMIUM_PLAN_ID]: [CRYPTO_PLAN_ID, EFH_PLAN_ID],\n [PREMIUM_PLUS_PLAN_ID]: [CRYPTO_PLAN_ID, EFH_PLAN_ID],\n [CRYPTO_PLAN_ID]: [EFH_PLAN_ID],\n [EFH_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADDITIONAL_TRAFFIC_ID]: [CRYPTO_PLAN_ID, EFH_PLAN_ID],\n [PASS_PREMIUM_PLAN_ID]: [],\n [PASS_FAMILY_PLAN_ID]: []\n },\n lifetime: {\n [PREMIUM_PLAN_ID]: [CRYPTO_PLAN_ID],\n [PREMIUM_PLUS_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADD_STORAGE_1COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADD_STORAGE_4COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADD_STORAGE_8COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADD_STORAGE_12COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADD_STORAGE_20COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [CUSTOM_20COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [CUSTOM_8COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [CUSTOM4TB_PLAN_ID]: [CRYPTO_PLAN_ID],\n [CUSTOM_PLAN_ID]: [CRYPTO_PLAN_ID],\n [CRYPTO_PLAN_ID]: [],\n [FAMILY2TB_PLAN_ID]: [CRYPTO_PLAN_ID],\n [FAMILY_CUSTOM_2COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [FAMILY_CUSTOM_5COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [FAMILY_ADD_1COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [FAMILY_ADD_2COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [FAMILY_ADD_5COUNT_PLAN_ID]: [CRYPTO_PLAN_ID],\n [ADDITIONAL_TRAFFIC_ID]: [CRYPTO_PLAN_ID],\n [PASS_PREMIUM_PLAN_ID]: [],\n [PASS_FAMILY_PLAN_ID]: []\n }\n};\n\nexport const PERIOD_OPTIONS_PER_PLAN = {\n [PREMIUM_PLAN_ID]: [\"year\", \"lifetime\"],\n [PREMIUM_PLUS_PLAN_ID]: [\"year\", \"lifetime\"],\n [ADD_STORAGE_1COUNT_PLAN_ID]: [\"lifetime\"],\n [ADD_STORAGE_4COUNT_PLAN_ID]: [\"lifetime\"],\n [ADD_STORAGE_8COUNT_PLAN_ID]: [\"lifetime\"],\n [ADD_STORAGE_12COUNT_PLAN_ID]: [\"lifetime\"],\n [ADD_STORAGE_20COUNT_PLAN_ID]: [\"lifetime\"],\n [CUSTOM_8COUNT_PLAN_ID]: [\"lifetime\"],\n [CUSTOM_20COUNT_PLAN_ID]: [\"lifetime\"],\n [CUSTOM_PLAN_ID]: [\"lifetime\"],\n [CUSTOM4TB_PLAN_ID]: [\"lifetime\"],\n [CRYPTO_PLAN_ID]: [\"year\", \"lifetime\"],\n [EFH_PLAN_ID]: [\"month\", \"year\"],\n [FAMILY2TB_PLAN_ID]: [\"lifetime\"],\n [FAMILY_CUSTOM_2COUNT_PLAN_ID]: [\"lifetime\"],\n [FAMILY_CUSTOM_5COUNT_PLAN_ID]: [\"lifetime\"],\n [FAMILY_ADD_1COUNT_PLAN_ID]: [\"lifetime\"],\n [FAMILY_ADD_2COUNT_PLAN_ID]: [\"lifetime\"],\n [FAMILY_ADD_5COUNT_PLAN_ID]: [\"lifetime\"],\n [ADDITIONAL_TRAFFIC_ID]: [\"month\", \"year\", \"lifetime\"],\n [PASS_PREMIUM_PLAN_ID]: [\"month\", \"year\", \"lifetime\"],\n [PASS_FAMILY_PLAN_ID]: [\"month\", \"year\", \"lifetime\"]\n};\n\nexport const ADD_STORAGE_PLANS = [\n ADD_STORAGE_1COUNT_PLAN_ID,\n ADD_STORAGE_4COUNT_PLAN_ID,\n ADD_STORAGE_8COUNT_PLAN_ID,\n ADD_STORAGE_12COUNT_PLAN_ID,\n ADD_STORAGE_20COUNT_PLAN_ID,\n];\n\nexport const CUSTOM_STORAGE_PLANS = [\n CUSTOM_8COUNT_PLAN_ID,\n CUSTOM_20COUNT_PLAN_ID,\n];\n\nexport const FAMILY_ADD_STORAGE_PLANS = [\n FAMILY_ADD_1COUNT_PLAN_ID,\n FAMILY_ADD_2COUNT_PLAN_ID,\n FAMILY_ADD_5COUNT_PLAN_ID\n];\n\nexport const FAMILY_CUSTOM_STORAGE_PLANS = [\n FAMILY_CUSTOM_2COUNT_PLAN_ID,\n FAMILY_CUSTOM_5COUNT_PLAN_ID,\n];","import { useEffect, useRef, useState } from \"react\";\n\nimport * as DEFAULT from \"../defaultValues\";\nimport { PlanType } from \"../../../lib/types/PlanType\";\nimport type { PeriodType, CurrencyType } from \"../../../lib/types/dataTypes.components\";\nimport { currencyMap } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\nimport { rcookie, setcookie, hrefSearch } from \"@pcloud/web-utilities/dist/lib/utils\";\n\nconst useLoadPlans = (({\n user,\n plansType,\n plansVersion,\n discountCode,\n abTest,\n downgrade,\n stopPageLoading\n}) => {\n const [plans, setPlans] = useState(null);\n const [noPlans, setNoPlans] = useState(null);\n const [currency, setCurrency] = useState(DEFAULT.CURRENCY);\n\n const [loadingPlans, setLoadingPlans] = useState(true);\n const [loadingPlansError, setLoadingPlansError] = useState(null);\n\n const loadPlansXHR = useRef(null);\n const storagePlansBackupRes = useRef(null);\n const plansTypeRef = useRef(plansType);\n\n (plans: {[period: PeriodType]: [PlanType]});\n (currency: CurrencyType);\n (loadingPlans: boolean);\n (loadingPlansError: string | null);\n\n useEffect(() => {\n // Load plans data.\n abortPreviousLoadPlansRequest();\n\n setLoadingPlans(true);\n setLoadingPlansError(\"\");\n\n // If crypto was shwon due to no sorage plans available let's rollback it to its initial plans type. \n plansTypeRef.current = plansType;\n loadPlansXHR.current = loadPlansApiCall();\n }, [user, discountCode]);\n\n const loadPlansApiCall = () => {\n const params = getLoadPlansParams();\n\n return pCloudGlobals.apiMethod(\"billing/getplans\", params, \n (res) => {\n if (res.result !== 0) {\n onLoadPlansError();\n return false;\n }\n\n onLoadedPlans(res);\n },\n {\n errorCallback: onLoadPlansError, \n onXhrError: onLoadPlansError\n }) || null;\n };\n\n const getLoadPlansParams = () => {\n const params = {\n type: plansTypeRef.current // \"storage\"\n };\n\n if (user) {\n params.auth = user.auth;\n } else {\n params.clearsession = 1;\n }\n\n if (discountCode) {\n params.discountcode = discountCode;\n }\n\n if ((abTest && !rcookie(\"lpseenproducts\") || rcookie(\"abtestinitiated\") || rcookie(\"showorigprices\"))) {\n params.showorigprices = 1;\n params.label = rcookie(\"origipricelable\") || \"ABTestJan2024\";\n\n if (!rcookie(\"origipricelable\")) {\n setcookie(\"origipricelable\", \"ABTestJan2024\");\n }\n };\n\n if (downgrade) {\n params.isdowngrade = 1;\n }\n \n return params;\n }\n\n /**\n * \n * @param {\n * result: number, \n * currency: \"USD\" | \"EUR\" | \"GBP\" | \"BGN\",\n * products: {\n * [period: PeriodType]: [{\n * \"productid\": PlanIDType,\n * \"trafficafterbuy\": number,\n * \"canbuy\": boolean,\n * \"pricecents\": number,\n * \"originalpricecents\": number,\n * }]\n * } \n * } res \n */\n const onLoadedPlans = (res) => {\n const plansData = prepareLoadedPlansData(res);\n \n if (!plansData) {\n return;\n }\n\n stopPageLoading();\n setLoadingPlans(false);\n setLoadingPlansError(\"\");\n setCurrency(currencyMap[plansData.currency]);\n\n let canBuyDisabledReason = null;\n let hasProducts = false;\n \n for (const period in plansData.products) {\n if (plansData.products[period][0]?.type === \"storage\") {\n plansData.products[period].sort((a, b) => a.quota - b.quota);\n }\n\n // Cache first canbuydisabledreason in products by period array.\n canBuyDisabledReason = canBuyDisabledReason || (plansData.products[period][0]?.canbuydisabledreason) || null;\n\n if (plansVersion !== \"0.0.0\") {\n // We no longer want to show plans with canbuy === false.\n plansData.products[period] = plansData.products[period].filter(({ canbuy }) => canbuy);\n }\n\n if (plansData.products[period].length > 0) {\n hasProducts = true;\n } else {\n delete plansData.products[period];\n }\n\n // Plans version 0.0.0 shows all plans independently if they are disabled.\n if (plansVersion === \"0.0.0\" && plansData.products[period][0]?.type !== \"storage\") {\n break;\n }\n }\n\n // No plans available to buy.\n setNoPlans(!hasProducts ? {reason: canBuyDisabledReason} : null);\n\n setPlans(plansData.products);\n };\n\n const onLoadPlansError = (xhr, status, error) => {\n if (status && status === \"abort\") {\n return;\n }\n\n setLoadingPlans(false);\n setLoadingPlansError(__(\"custom_plan_price_error\"));\n }\n\n const abortPreviousLoadPlansRequest = () => {\n if (loadPlansXHR && typeof loadPlansXHR.current !== \"undefined\" && loadPlansXHR.current !== null && loadPlansXHR.current.abort) {\n loadPlansXHR.current.abort();\n }\n }\n\n const allPlansAreDisabled = (plans: {[period: PeriodType]: [PlanType]}) => {\n for (const period in plans) {\n if (plans[period].some(plan => plan.canbuy)) {\n return false;\n }\n }\n // Yes, they are disabled.\n return true;\n }\n\n const filterPlansByRequiredURLParams = (plans: {[period: PeriodType]: [PlanType]}) => {\n for (const period in plans) {\n plans[period] = plans[period].filter(plan => !plan.paramforshow || plan.paramforshow === \"\" || hrefSearch(plan.paramforshow));\n }\n };\n\n const prepareLoadedPlansData = (res) => {\n if (plansTypeRef.current === \"storage_family\") {\n // show4tboption\n filterPlansByRequiredURLParams(res.products);\n }\n\n if (allPlansAreDisabled(res.products)) {\n // User has already bought all possible storage. Let's offer them encryption plans.\n if (plansTypeRef.current === \"storage\") {\n\n // Check if we are a family or business user.\n let canBuyDisabledReason = null;\n for (const period in res.products) {\n // Check against first canbuydisabledreason in products by period array.\n canBuyDisabledReason = (res.products[period][0]?.canbuydisabledreason) || null;\n if (canBuyDisabledReason !== null) {\n break;\n }\n }\n\n // Skip family or business users from offering Encryption plans.\n if ([\"isbusiness\", \"isfamily\", \"isfamilymember\"].indexOf(canBuyDisabledReason) === -1) {\n // Save backup to be restored if all crypto plans are also disabled.\n storagePlansBackupRes.current = res;\n // Load crypto plans.\n plansTypeRef.current = \"crypto\";\n loadPlansXHR.current = loadPlansApiCall();\n return false;\n }\n }\n\n // Rollback to all disabled storage plans.\n if (storagePlansBackupRes.current) {\n plansTypeRef.current = \"storage\";\n return storagePlansBackupRes.current;\n }\n } else {\n storagePlansBackupRes.current = null;\n }\n\n return res;\n };\n\n return {\n plans,\n currency,\n loadingPlans,\n loadingPlansError,\n noPlans\n };\n});\n\nexport default useLoadPlans;","import {\n CUSTOM_PLAN_ID,\n CUSTOM4TB_PLAN_ID, \n ADDITIONAL_TRAFFIC_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY4TB_PLAN_ID,\n FAMILY10TB_PLAN_ID,\n PASS_PREMIUM_PLAN_ID,\n PASS_FAMILY_PLAN_ID,\n CRYPTO_PLAN_ID,\n VIVACOM_500GB_PLAN_ID,\n VIVACOM_1TB_PLAN_ID,\n VIVACOM_128GB_PLAN_ID\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\n\nimport { productNameMap, STORAGE_PLANS, PASS_PLANS } from \"@pcloud/web-utilities/dist/plans/plansInfo\";\n\nimport { getPlanTtraffic, getUserTtrafficCount, getCurrentStorageCount } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\n\nimport { PLAN_NAMES_KEYS } from \"@pcloud/web-utilities/dist/config/constants\";\n\nimport { renderQuota } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\n\nimport diffs from \"../lib/diffs\";\n\nimport {\n __, \n convertDateToDDMMMYY, \n daysDiff \n} from \"./utils\";\n\nimport { signToCurrency } from \"@pcloud/web-utilities/dist/payments/constants.payments\";\n\nimport { getPaymentsApiUrl, isInternalPaymentProvider, providers } from \"./payments\";\n\nimport userinfo from \"@pcloud/web-utilities/dist/api/methods/userinfo\";\n\nexport const filterSubscriptionsByCartItems = (userSubscriptions, planIdsToBuy, buyingPeriod) => {\n if (!planIdsToBuy.length || buyingPeriod === \"lifetime\" || !userSubscriptions || !userSubscriptions.length) {\n return;\n }\n\n const internalPaymentSubscriptions = userSubscriptions.filter(subscription => subscription.status !== \"canceled\" && isInternalPaymentProvider(subscription.provider));\n \n const plans = [];\n\n const storagePlansToUpgrade = [];\n const passPlansToUpgrade = [];\n const trafficPlansToUpgrade = [];\n const periods = [];\n let extProductIds = [];\n\n userSubscriptions.map(subscription => {\n if (subscription.status === \"canceled\") {\n return;\n }\n\n let subscriptionPeriod = null;\n let subscriptionProducts = [];\n \n if (subscriptionPeriod === null && !isInternalPaymentProvider(subscription.provider)) { \n // Google play, iTunes, Vivacom are here.\n // Set the opposite to the buyingPeriod, because we want to show them in \"YOUR ORDER\" list instead of \"CURRENTLY SUBSCRIBED\" list.\n // We'll receive money for those plans independently from their current subscription.\n subscriptionPeriod = buyingPeriod === \"month\" ? \"year\" : \"month\";\n\n subscriptionProducts = subscription.products.filter(productId => \n // Remove products if they are already part of active SafeCharge, PayPal or Stripe subscription.\n !internalPaymentSubscriptions.find(sub => sub.products.includes(productId)) &&\n // Remove VIVACOM products, because they should not be included in subscribed products.\n (productId !== VIVACOM_128GB_PLAN_ID && productId !== VIVACOM_1TB_PLAN_ID && productId !== VIVACOM_500GB_PLAN_ID) && \n // It's not already added as part of another external payment provider.\n extProductIds.indexOf(productId) === -1\n );\n\n if (subscriptionProducts.length === 0) {\n return;\n }\n\n extProductIds = extProductIds.concat(subscriptionProducts);\n } else {\n // SafeCharge, PayPal, Stripe are here.\n subscriptionPeriod = subscription.period;\n subscriptionProducts = subscription.products;\n }\n\n const userIsBuyingStorage = planIdsToBuy.some(planId => STORAGE_PLANS.indexOf(planId) !== -1);\n const userIsBuyingPcloudPass = planIdsToBuy.some(planId => PASS_PLANS.indexOf(planId) !== -1);\n const userIsBuyingTraffic = planIdsToBuy.some(planId => planId === ADDITIONAL_TRAFFIC_ID);\n\n periods.push(subscriptionPeriod);\n \n const subscribedProducts = subscriptionProducts.filter(planId => {\n if (userIsBuyingTraffic && planId === ADDITIONAL_TRAFFIC_ID) {\n // User is upgrading their traffic.\n trafficPlansToUpgrade.push(planId);\n return false;\n }\n\n const isStoragePlan = STORAGE_PLANS.indexOf(planId) !== -1;\n const isPassPlan = PASS_PLANS.indexOf(planId) !== -1;\n \n if (isStoragePlan && userIsBuyingStorage) {\n storagePlansToUpgrade.push(planId);\n }\n\n if (userIsBuyingPcloudPass && isPassPlan) {\n passPlansToUpgrade.push(planId);\n }\n\n // Remove 1. Plan is for storage and we're buying DIFFERENT storage. 3. Plan is pass plan and we're buying DIFFERENT pass plan.\n return !((isStoragePlan && userIsBuyingStorage && planIdsToBuy.indexOf(planId) === -1) || (userIsBuyingPcloudPass && isPassPlan && planIdsToBuy.indexOf(planId) === -1));\n });\n\n if (subscribedProducts.length === 0) {\n return;\n }\n \n plans.push({subscribedProducts, period: subscriptionPeriod});\n });\n\n return {plans, storagePlansToUpgrade, passPlansToUpgrade, trafficPlansToUpgrade, periods};\n};\n\nexport const getPreviewUserPlanChangeApiMethodAndOpts = (user, paymentType, paymentCardProvider) => {\n let apiMethod = \"\";\n const apiMethodOpts = {};\n\n if (!user) {\n apiMethod = \"billing/getproductsinfo\";\n } else {\n switch (paymentType) {\n case \"ccard\":\n switch (paymentCardProvider) {\n case \"safecharge\":\n apiMethod = \"safecharge/previewuserplanchange\";\n break;\n case \"stripe\":\n apiMethod = \"billing/stripe/previewuserplanchange\";\n break;\n }\n break;\n case \"paypal\": \n apiMethod = \"subscription/previewuserplanchange\";\n apiMethodOpts.apiServer = getPaymentsApiUrl();\n break;\n case \"alipay\": \n case \"wechat\": \n apiMethod = \"billing/stripe/previewuserplanchange\";\n break;\n case \"local\":\n apiMethod = \"safecharge/previewuserplanchange\";\n break;\n }\n }\n\n return {apiMethod, apiMethodOpts};\n};\n\nexport const loadPlanInfoApiCall = (\n {\n user, \n chosenPeriod,\n chosenPlanIds, \n getNextBilling = false,\n subscribedPlans = {plans: [], storagePlansToUpgrade: [], passPlansToUpgrade: [], trafficPlansToUpgrade: [], periods: []}, \n chosenUpsellPlans = {}, \n traffic, \n paymentView, \n cardProvider,\n discountCode,\n downgrade = false,\n forceFresh = false\n },\n\n onSuccess = (res, inputData) => {}, \n onError = (err) => {}\n ) => {\n\n const params = {};\n const chosenUpsellPlanIds = [];\n\n if (getNextBilling) {\n params.getnextbilling = 1;\n } else {\n if (!chosenPlanIds || chosenPlanIds.length == 0) {\n return null;\n }\n \n const productIDs = subscribedPlans.plans.length === 0 ? chosenPlanIds.concat([]) : [...new Set(chosenPlanIds.concat(...new Set(subscribedPlans.plans.map(({subscribedProducts}) => subscribedProducts))))];\n \n if (chosenUpsellPlans !== null) {\n for (const planId in chosenUpsellPlans) {\n if (productIDs.indexOf(chosenUpsellPlans[planId]) === -1) {\n productIDs.push(chosenUpsellPlans[planId]);\n chosenUpsellPlanIds.push(chosenUpsellPlans[planId]);\n }\n }\n }\n \n let trafficParam = -1;\n \n if (productIDs.indexOf(ADDITIONAL_TRAFFIC_ID) !== -1) {\n trafficParam = parseInt(traffic) || (user && getUserTtrafficCount(user, true));\n }\n \n params.products = productIDs.join(\",\");\n params.period = chosenPeriod;\n\n if (trafficParam !== -1) {\n params.traffic = trafficParam;\n }\n }\n\n if (user) {\n params.auth = user.auth;\n } else {\n params.clearsession = 1;\n }\n\n if (discountCode) {\n params.discountcode = discountCode;\n }\n\n if (downgrade) {\n params.isdowngrade = 1;\n }\n\n if (user?.lastsubscription?.status === \"active\" && user.lastsubscription?.products.indexOf(CUSTOM4TB_PLAN_ID) !== -1 && chosenPeriod !== \"lifetime\") {\n if (user?.planparams?.traffic) {\n params.traffic = (params.traffic || 0) + user.planparams.traffic\n }\n\n if (user?.planparams?.storage) {\n params.storage = user.planparams.storage\n }\n }\n\n // console.log('Load order info params', params);\n\n const {apiMethod: loadOrderInfoApiMethod, apiMethodOpts: loadOrderInfoApiMethodOpts} = getPreviewUserPlanChangeApiMethodAndOpts(user, paymentView, cardProvider);\n \n if (loadOrderInfoApiMethod == \"\") {\n onError({message: \"Missing provider method to handle this provider.\"});\n }\n\n if (forceFresh) {\n loadOrderInfoApiMethodOpts.forceFresh = forceFresh;\n }\n\n return pCloudGlobals.apiMethod(loadOrderInfoApiMethod, params, \n (res) => {\n onSuccess(res, {user, chosenPlanIds, subscribedPlans, chosenUpsellPlanIds});\n },\n {\n ...loadOrderInfoApiMethodOpts, \n errorCallback: onError, \n onXhrError: (xhr, status, error) => onError({\n result: \"xhr_error\", \n error: {xhr, status, error}\n })\n }) || null;\n}\n\nexport const checkIfUserPlanIsChanged = (currentUser, newUser) => {\n if ((!currentUser.lastsubscription && newUser.lastsubscription) || (currentUser.lastsubscription && !newUser.lastsubscription)) {\n return true;\n }\n\n // Amount of subscribed products are different?\n if (currentUser.lastsubscription && newUser.lastsubscription) {\n\n // Check period.\n if (currentUser.lastsubscription.period !== newUser.lastsubscription.period) {\n return true;\n }\n\n if (currentUser.lastsubscription.products.length !== newUser.lastsubscription.products.length) {\n return true;\n }\n\n // Check if each product exist in the other array.\n if(!newUser.lastsubscription.products.every(productId => currentUser.lastsubscription.products.includes(productId))) {\n return true;\n }\n }\n\n // Lifetime plans are different?\n if (\n currentUser.premiumlifetime != newUser.premiumlifetime || \n currentUser.cryptolifetime != newUser.cryptolifetime || \n currentUser.additionaltrafficlifetime != newUser.additionaltrafficlifetime\n ) {\n return true;\n }\n\n // Check pass plans\n if ((!currentUser.passmanagerdata && newUser.passmanagerdata) || (currentUser.passmanagerdata && !newUser.passmanagerdata)) {\n return true;\n }\n\n if (currentUser.passmanagerdata && newUser.passmanagerdata) {\n if (currentUser.passmanagerdata.islifetime != newUser.passmanagerdata.islifetime) {\n return true;\n }\n\n if (currentUser.passmanagerdata.family != newUser.passmanagerdata.family) {\n return true;\n }\n\n if (currentUser.passmanagerdata.plan != newUser.passmanagerdata.plan) {\n return true;\n }\n }\n\n // Amount of traffic is different?\n if (getUserTtrafficCount(currentUser, true) != getUserTtrafficCount(newUser, true)) {\n return true;\n }\n\n // Amount of storage is different?\n if (getCurrentStorageCount(currentUser) != getCurrentStorageCount(newUser)) {\n return true;\n }\n\n return false;\n};\n\nexport const getPaymentSummaryText = (subscriptionSummary, keepOldSubscriptionDate) => {\n let paymentSummaryText = \"\";\n \n const remainingDaysCurrentPlan = subscriptionSummary.nextBillingDate != \"\" ? daysDiff(subscriptionSummary.nextBillingDate) : 0;\n\n if (keepOldSubscriptionDate && remainingDaysCurrentPlan > 0) {\n if (subscriptionSummary.totalNextPriceToPay !== subscriptionSummary.totalPlanPrice) {\n // Text 1:\n // Payment applies to the remаining %num_days% days of your current plan. \n // Your total subscription price is %total_amount_and_currency%. \n // Next payment: %next_amount_and_currency%, on %date%.\n paymentSummaryText = __(remainingDaysCurrentPlan === 1 ? \"payment_summary_text_1_1\" : \"payment_summary_text_1\")\n .replace(\"%num_days%\", remainingDaysCurrentPlan)\n .replace(\"%total_amount_and_currency%\", `${subscriptionSummary.totalPlanPrice / 100} ${signToCurrency[subscriptionSummary.currency]}`)\n .replace(\"%next_amount_and_currency%\", `${subscriptionSummary.totalNextPriceToPay / 100} ${signToCurrency[subscriptionSummary.currency]}`)\n .replace(\"%date%\", convertDateToDDMMMYY(subscriptionSummary.nextBillingDate));\n } else {\n // Text 2:\n // Payment applies to the remаining %num_days% days of your current plan.\n // Your total subscription price is %total_amount_and_currency%. \n // Next billing date: %date%.\n paymentSummaryText = __(remainingDaysCurrentPlan === 1 ? \"payment_summary_text_2_1\" : \"payment_summary_text_2\")\n .replace(\"%num_days%\", remainingDaysCurrentPlan)\n .replace(\"%total_amount_and_currency%\", `${subscriptionSummary.totalPlanPrice / 100} ${signToCurrency[subscriptionSummary.currency]}`)\n .replace(\"%date%\", convertDateToDDMMMYY(subscriptionSummary.nextBillingDate));\n }\n } else {\n if (subscriptionSummary.totalPlanPrice !== subscriptionSummary.totalPriceToPay && subscriptionSummary.totalNextPriceToPay !== subscriptionSummary.totalPlanPrice) {\n // Text 3:\n // Your total subscription price is %total_amount_and_currency%. \n // Next payment: %next_amount_and_currency%, on %date%.\n paymentSummaryText = __(\"payment_summary_text_3\")\n .replace(\"%total_amount_and_currency%\", `${subscriptionSummary.totalPlanPrice / 100} ${signToCurrency[subscriptionSummary.currency]}`)\n .replace(\"%next_amount_and_currency%\", `${subscriptionSummary.totalNextPriceToPay / 100} ${signToCurrency[subscriptionSummary.currency]}`)\n .replace(\"%date%\", convertDateToDDMMMYY(subscriptionSummary.nextBillingDate));\n } else if (subscriptionSummary.totalPlanPrice !== subscriptionSummary.totalPriceToPay && subscriptionSummary.totalNextPriceToPay === subscriptionSummary.totalPlanPrice) {\n // Text 4:\n // Your total subscription price is %total_amount_and_currency%. \n // Next billing date: %date%.\n // payment_summary_text_4\n paymentSummaryText = __(\"payment_summary_text_4\")\n .replace(\"%total_amount_and_currency%\", `${subscriptionSummary.totalPlanPrice / 100} ${signToCurrency[subscriptionSummary.currency]}`)\n .replace(\"%date%\", convertDateToDDMMMYY(subscriptionSummary.nextBillingDate));\n } else if (subscriptionSummary.totalPlanPrice === subscriptionSummary.totalPriceToPay && subscriptionSummary.totalNextPriceToPay !== subscriptionSummary.totalPlanPrice) {\n // Text 5:\n // Next payment: %amount_and_currency%, on %date%.\n paymentSummaryText = __(\"next_payment_price_and_date\").replace(\"%amount_and_currency%\", `${subscriptionSummary.totalNextPriceToPay / 100} ${signToCurrency[subscriptionSummary.currency]}`).replace(\"%date%\", convertDateToDDMMMYY(subscriptionSummary.nextBillingDate));\n } else {\n // Text 6:\n // Next billing date: %date%.\n paymentSummaryText = __(\"next_billing_date\").replace(\"%date%\", convertDateToDDMMMYY(subscriptionSummary.nextBillingDate))\n }\n }\n\n return paymentSummaryText;\n}\n\nexport const subscribeForUserDiff = (user, onChange, currentUserDiffRef) => {\n if (!user) {\n return;\n }\n\n if (currentUserDiffRef.current) {\n // Skip stop is important here, because we are readding different listener.\n currentUserDiffRef.current(true);\n }\n\n const { auth } = user;\n\n currentUserDiffRef.current = diffs.listen(auth, entries => {\n if (entries.length) {\n const modifyUserEvents = entries.filter(({ event, time, userinfo }) => {\n const eventTime = new Date(time);\n return event === \"modifyuserinfo\" && userinfo;\n });\n\n if (modifyUserEvents.length) {\n const { userinfo } = modifyUserEvents[modifyUserEvents.length - 1];\n // console.log(\"!!!!!!!!!!!!!!! userDiff\", { user, userinfo });\n if (user && userinfo && userinfo.language !== user.language) {\n return;\n };\n\n if (onChange) {\n // Refresh the user info if we are before payment process\n // or show thank you page if we are in active payment process.\n onChange(userinfo);\n currentUserDiffRef.current();\n } else {\n // Not invoked, but just in case we don't have given onChange...\n location.reload();\n }\n }\n }\n });\n};\n\nexport const waitForAPItoUpdateUserInfo = ({\n onUpdateSuccess,\n metapixeleventid,\n currentUser,\n userDiff,\n transactionID,\n successCallback,\n errorCallback\n}) => {\n // Let's set fallback for user info change, because the event for changed user info\n // can be received from the backend before payment success method to be invoked.\n const fallbackUserInfoChangeTimeoutHandler = setTimeout(async () => {\n const userInfoResponse = await userinfo(currentUser.auth, () => {}, { apiServer: pCloudGlobals?.apiConfig?.apiServer, forceFresh: true });\n\n if (userInfoResponse && userInfoResponse.result === 0 && checkIfUserPlanIsChanged(currentUser, userInfoResponse)) {\n onUpdateSuccess({transactionID, metapixeleventid}, successCallback, errorCallback);\n diffs.stop();\n }\n }, 3000);\n\n subscribeForUserDiff(currentUser, (newUserInfo) => {\n clearTimeout(fallbackUserInfoChangeTimeoutHandler);\n onUpdateSuccess({transactionID, metapixeleventid}, successCallback, errorCallback);\n }, userDiff);\n};\n\nexport const getPaymentType = (userPaymentProvider) => {\n return !userPaymentProvider ? null : (userPaymentProvider.short_name === \"safecharge\" || userPaymentProvider.short_name === \"stripe\" ? \"ccard\" : (userPaymentProvider.short_name === \"paypal\" ? \"paypal\" : null));\n};\n\nexport const getCardProvider = (userPaymentProvider) => {\n return getPaymentType(userPaymentProvider) === \"ccard\" ? (userPaymentProvider.short_name === \"safecharge\" ? \"safecharge\" : \"stripe\") : null;\n}\n\nexport const getSubscriptionPaymentProvider = (subscription) => {\n return providers[(subscription && subscription.provider) || 0] || null;\n}\n\nexport const isExternalPaymentProvider = (subscription) => {\n const paymentProvider = getSubscriptionPaymentProvider(subscription);\n return paymentProvider && paymentProvider.short_name !== \"safecharge\" && paymentProvider.short_name !== \"stripe\" && paymentProvider.short_name !== \"paypal\";\n}\n\nexport const getUserLifetimeProducts = (user) => {\n if (!(user && (user.premiumlifetime || user.cryptolifetime || user.additionaltrafficlifetime || (user.passmanagerdata && user.passmanagerdata.islifetime)))) {\n // No Lifetime services.\n return [];\n }\n\n const lifetimeProducts = [];\n\n if (user.premiumlifetime) {\n lifetimeProducts.push({\n id: user.plan,\n name: (user.plan == CUSTOM_PLAN_ID ? __(PLAN_NAMES_KEYS[CUSTOM_PLAN_ID]) : productNameMap[user.plan].long) + ((user.plan == CUSTOM4TB_PLAN_ID || user.plan == CUSTOM_PLAN_ID) ? \" \" + renderQuota(user.quota) : \"\"),\n });\n }\n\n if (user.cryptolifetime) {\n lifetimeProducts.push({\n id: CRYPTO_PLAN_ID,\n name: productNameMap[CRYPTO_PLAN_ID].long\n });\n }\n\n if (user.additionaltrafficlifetime) {\n lifetimeProducts.push({\n id: ADDITIONAL_TRAFFIC_ID,\n name: productNameMap[ADDITIONAL_TRAFFIC_ID].long.replace(\"%amount%\", getPlanTtraffic(getUserTtrafficCount(user, true)))\n });\n }\n\n if (user.passmanagerdata && user.passmanagerdata.islifetime) {\n if (user.passmanagerdata.plan === 1) {\n lifetimeProducts.push({\n id: PASS_PREMIUM_PLAN_ID,\n name: productNameMap[PASS_PREMIUM_PLAN_ID].long\n });\n }\n\n if (user.passmanagerdata.plan === 2) {\n lifetimeProducts.push({\n id: PASS_FAMILY_PLAN_ID,\n name: productNameMap[PASS_FAMILY_PLAN_ID].long\n });\n }\n }\n\n return lifetimeProducts;\n};\n\nexport const getPricingPageURL = (plans, {discount, period, downgrade}, {pricingPagePassURL, familyPageURL, trafficPageURL, cryptoPageURL, pricingPageURL}) => {\n let url = \"\";\n for (const plan of plans) {\n switch (plan.id) {\n case PASS_PREMIUM_PLAN_ID:\n case PASS_FAMILY_PLAN_ID:\n url = pricingPagePassURL;\n break;\n case FAMILY2TB_PLAN_ID:\n case FAMILY4TB_PLAN_ID:\n case FAMILY10TB_PLAN_ID:\n url = familyPageURL;\n break;\n case ADDITIONAL_TRAFFIC_ID: \n url = trafficPageURL;\n break;\n case CRYPTO_PLAN_ID:\n url = cryptoPageURL;\n break;\n default: \n url = pricingPageURL;\n break;\n }\n\n if (url !== \"\") {\n // Break the for;\n break;\n }\n }\n\n const params = [];\n\n if (discount) {\n params.push(\"discount=\" + discount);\n }\n\n if (downgrade) {\n params.push(\"downgrade=1\");\n }\n\n params.push(\"period=\" + period);\n\n return url + (url.search(/[?]/) === -1 ? \"?\" : \"&\") + params.join(\"&\");\n};\n","import { useEffect, useRef, useState } from \"react\";\n\nimport { subscribeForUserDiff } from \"../../../lib/plansUtils\";\n\nimport type { Userinfo } from \"../../../lib/types/dataTypes.components\";\n\nimport { rcookie, hrefSearch } from \"@pcloud/web-utilities/dist/lib/utils\";\n\nimport userinfo from \"@pcloud/web-utilities/dist/api/methods/userinfo\";\n\nconst useUser = (({\n globalUserInfo,\n showPageLoading,\n setHiddenPeriods,\n getInitialHiddenPeriods\n}) => {\n\n const [user, setUser] = useState(globalUserInfo || null);\n const userDiff = useRef(null);\n\n (user: Userinfo | null);\n\n useEffect(() => {\n if (user) {\n // Logged in\n _subscribeForUserDiff(user, onUserDiff);\n\n if (typeof _learnq !== 'undefined' && (rcookie('ref') == 56215 || hrefSearch(\"ref\") == 56215)) {\n _learnq.push(['identify', {\n '$email': user.email,\n '$id': user.userid\n }])\n }\n\n } else {\n // Logged out.\n diffs.stop();\n }\n }, [user]); //[user]\n\n const onLoginCallback = (userData, invokedAfterAction) => {\n if (pCloud && pCloud.user) {\n // If we are here when logged by using another page.\n if (invokedAfterAction !== \"onAuthAction\") {\n showPageLoading();\n } // Else we were logged by using the login / register form ON this page.\n\n setUser({ ...pCloud.user });\n }\n }\n\n const onLogoutCallback = () => {\n // Show pageLoading\n // showPageLoading();\n setHiddenPeriods(getInitialHiddenPeriods());\n setUser(null);\n };\n\n const onUserDiff = async (newUserInfo) => {\n showPageLoading();\n\n // newUserInfo has no exactly the same info returned by /userinfo. For example we want to use \"publiclinkquota\", but it's missing there.\n const userInfoResponse = await userinfo(user.auth, () => {}, { apiServer: pCloudGlobals?.apiConfig?.apiServer, forceFresh: true });\n\n setUser({...user, ...userInfoResponse});\n };\n\n const _subscribeForUserDiff = (user, onChange) => {\n return subscribeForUserDiff(user, onChange, userDiff);\n };\n\n return {\n user,\n onLoginCallback,\n onLogoutCallback\n }\n});\n\nexport default useUser;","import React from \"react\";\nimport styled from \"styled-components\";\nimport { __ } from \"../../../lib/utils\";\nimport AvailableSVGIcon from \"../../../svg/plan-feature-available-check.svg\";\nimport UnavailableSVGIcon from \"../../../svg/plan-feature-unavailable.svg\";\n\nconst PlansComparisonTable = ({\n CustomAvailableSvgIcon = null,\n CustomUnavailableSVGIcon = null,\n showFeatureDescrionInANewRow = true,\n comparePlansTexts = [\n {\n text: __(\"acclr1_plans_free\", \"Free Plan\"),\n color: null\n },\n {\n text: __(\"acclr1_plans_paid\", \"Paid Plans\"),\n color: null\n }\n ],\n compareFeaturesValues = [\n {\n feature: __(\"acclr1_plans_storage\", \"Storage\"),\n description: \"\",\n valuesForPlan: [\n {\n text: __(\"acclr1_plans_10gb\", \"Up to 10 GB\"),\n color: null,\n },\n {\n text: `500 ${__(\"GB\")} - 10 ${__(\"TB\")}`,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_sharing\", \"File Sharing\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 1,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_access\", \"Access from any Device\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 1,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_branding\", \"Shared link branding\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 0,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_30days_trash\", \"30 days trash history\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 0,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_public_folder\", \"Public Folder\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 0,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_password_protected_links\", \"Password protected shared links\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 0,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n {\n feature: __(\"acclr1_plans_expiration_date_for_shared_links\", \"Expiration date for shared links\"),\n description: \"\",\n valuesForPlan: [\n {\n boolean: 0,\n color: null,\n },\n {\n boolean: 1,\n color: null,\n },\n ]\n },\n ]\n}) => {\n const columnsNumber = comparePlansTexts.length + 1;\n const columnWidth = 100 / columnsNumber;\n\n const renderHeaderRow = (rowid = 0) => {\n return (\n \n \n {comparePlansTexts.map(({ text, color }, index) => {text})}\n \n )\n }\n const rednerTableContent = () => {\n return (\n compareFeaturesValues.map(({ feature, valuesForPlan, description }, rowindex) => (\n \n \n
{feature}
\n {(description && !showFeatureDescrionInANewRow) ? {description} : null}\n
\n {valuesForPlan.map(({ text, boolean, color }, featureindex) => {\n if (text) {\n return {text};\n }\n\n if (typeof text === \"undefined\" && (typeof boolean === \"number\" || typeof boolean === \"boolean\")) {\n return boolean ? (\n \n {CustomAvailableSvgIcon ? : }\n \n ) : (\n \n {CustomUnavailableSVGIcon ? : }\n \n );\n }\n })}\n {(description && showFeatureDescrionInANewRow) ? {description} : null}\n
\n ))\n )\n }\n\n return (\n \n {renderHeaderRow()}\n {rednerTableContent()}\n \n );\n};\n\nexport default PlansComparisonTable;\n\nconst CompareTable = styled.div`\n background: #fff;\n box-shadow: 4px, 4px, 4, 0, rgba(96, 96, 96, 0.2);\n border-radius: 17px;\n max-width: 1032px;\n margin: 0 auto;\n padding: 40px 60px;\n box-sizing: border-box;\n\n @media (max-width: 768px) {\n padding: 12px 30px;\n }\n`;\n\nconst Row = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 18px 0;\n border-bottom: 1px solid #EEEEEE;\n\n ${({descriptiononnewrow}) => {\n if (descriptiononnewrow) {\n return `\n flex-wrap: wrap;\n `;\n }\n }}\n &:last-of-type {\n border-bottom: none;\n }\n\n @media (max-width: 768px) {\n padding: 12px 0px;\n }\n`;\nconst HeaderRow = styled(Row)`\n border-bottom: none;\n`;\nconst Cell = styled.div`\n width: ${({ width }) => width}%;\n font-size: 15px;\n letter-spacing: -0.2px;\n text-align: center;\n\n ${({ color }) => {\n if (color) {\n return `\n color: ${color};\n svg {\n fill: ${color};\n }\n `;\n }\n }}\n`;\n\nconst FeatureCell = styled(Cell)`\n text-align: left;\n`;\n\nconst HeaderCell = styled(Cell)`\n text-align: center;\n font-weight: 500;\n font-size: 19px;\n color: ${({ color }) => {color || \"#000\"}};\n`;\n\nconst FeatureDescription = styled.div`\n margin-top: 4px;\n color: #454545;\n font-size: 12px;\n width: 100%;\n text-align: left;\n font-weight: 300;\n flex-grow: 1;\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n font-size: 10px;\n }\n`;","//@flow\n\nimport React, { Fragment, useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport Componentify from \"react-componentify\";\nimport reactStringReplace from \"react-string-replace\";\n\nimport type {\n PeriodType,\n Userinfo,\n DisabledPlan,\n CurrencyType\n} from \"../../../lib/types/dataTypes.components\";\n\nimport { linkConverter } from \"@pcloud/web-utilities/dist/lib/componentifyConverters\";\n\nimport { CRYPTO_PLAN_ID } from \"@pcloud/web-utilities/dist/plans/constants.plans\";\nimport { __ } from \"../../../lib/utils\";\n\nimport { PlanType } from \"../../../lib/types/PlanType\";\n\nimport Plans from \"./Plans\";\nimport ExplorePcloud from \"./ExplorePcloud\";\nimport UserPlanInfo from \"./UserPlanInfo\";\nimport { TopHeadline, PriceError, UserPlanInfoContainer } from \"./Style\";\n\nimport TimerDiscountModal from \"../../ModalManager/StaticContainers/TimerDiscountModal\";\nimport ImagePreviewModalSimple from \"../../ModalManager/StaticContainers/ImagePreviewModalSimple\";\nimport FeaturesSection from \"../../FeaturesSection\";\nimport PaymentLogos from \"../../PaymentLogos\";\nimport GogoMedal from \"../../../../new_site/images/plans/gogo-medal.svg\";\nimport ChevronTop from \"../../../../new_site/images/plans/chevron-top.svg\";\nimport ChevronBottom from \"../../../../new_site/images/plans/chevron-bottom.svg\";\n\nimport SimpleExitIntentModal from \"../../ModalManager/StaticContainers/SimpleExitIntentModal\";\nimport PlansComparisonTable from \"./PlansComparisonTable\";\nimport EncryptionSVGIcon from \"../../../svg/pricing-encryption.svg\";\nimport SwissSVGIcon from \"../../../svg/pricing-swiss-protection.svg\";\nimport EasyAccessSVGIcon from \"../../../svg/pricing-easy-access.svg\";\n\ntype Props = {\n loadingPlans: boolean,\n loadingPlansError: string | null,\n currency: CurrencyType,\n user: Userinfo | null,\n disabled: DisabledPlan | null,\n plans: {[period: PeriodType]: [PlanType]},\n hiddenPeriods: [PeriodType],\n chosenPeriod: PeriodType,\n switchToMonthlyPlans: () => void,\n setChosenPeriod: (chosenPeriod: PeriodType) => void,\n setDiscount: (discount: string) => void,\n discount: string,\n hidePlansFooter: boolean,\n hideExitIntent: boolean,\n hidePageTitle: boolean,\n hideFeaturesForAll: boolean,\n hidePaymentLogos: boolean,\n showComparePrices: boolean,\n showBestPriceByRandomGirl: boolean,\n country: string,\n checkoutPageLink: string,\n downgrade: boolean,\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n showPlanDescriptionText: boolean,\n hideJapanesePartner: boolean,\n showTextUnderPrices: boolean,\n maxNumberOfFeaturesToShow: number, // -1 -> no limit\n periodsMainColor: ColorType,\n periodsBackgroundColor: string,\n defaultPeriod: PeriodType,\n analytics: {\n category: string,\n label: string,\n pageTitle: string\n },\n switchPlansFromSamePeriodByTabs: boolean,\n onTabSwitch: (plans: [PlanType], period: PeriodType, currency: CurrencyType) => void,\n tabsTitle: string\n};\n\nconst PricingPageAcceleratedUI = ({\n loadingPlans,\n loadingPlansError,\n currency,\n user,\n plans,\n hiddenPeriods,\n chosenPeriod,\n switchToMonthlyPlans,\n setChosenPeriod,\n setDiscount,\n discount,\n hidePlansFooter,\n hideExitIntent,\n hidePageTitle,\n hideFeaturesForAll,\n hidePaymentLogos,\n hideDiscountPercentage,\n showComparePrices,\n showBestPriceByRandomGirl,\n country,\n checkoutPageLink,\n downgrade,\n plansType,\n showPlanDescriptionText = false,\n hideJapanesePartner = false,\n showTextUnderPrices = true,\n maxNumberOfFeaturesToShow = 2,\n periodsMainColor = \"cyan\",\n periodsBackgroundColor = \"#ebebeb\",\n defaultPeriod = \"lifetime\",\n analytics = null,\n switchPlansFromSamePeriodByTabs = false,\n onTabSwitch = null,\n tabsTitle = null\n}: Props) => {\n const [isMobile, setIsMobile] = useState(window.innerWidth <= 768);\n const [imagePreviewModalSrc, setImagePreviewModalSrc] = useState();\n const [showMoreJaCloudAward, setShowMoreJaCloudAward] = useState(false);\n\n useEffect(() => {\n window.addEventListener('resize', onResizeSetIsMobile);\n\n return () => {\n window.removeEventListener('resize', onResizeSetIsMobile);\n }\n }, []);\n\n const onResizeSetIsMobile = () => {\n const newIsMobile = window.innerWidth <= 768;\n setIsMobile(newIsMobile);\n }\n \n const openRegisterModal = () => {\n openGlobalModal(\"register\");\n };\n\n const scrollToJapaneseCertificates = () => {\n const targetElement = document.getElementById('japanese-certificates-container');\n const header = document.querySelector('header');\n \n if (targetElement && header) {\n const position = targetElement.getBoundingClientRect().top + window.scrollY - header.offsetHeight;\n window.scroll({ top: position, behavior: 'smooth' });\n }\n };\n\n const renderPageTopSection = () => {\n if (hidePageTitle) {\n return;\n }\n\n let topHeadlineText = __(\"acclr1_plans_head\", \"Upgrade your free plan for more security, storage and flexibility\");\n\n if (user) {\n const { business, plan } = user;\n\n if (business) {\n topHeadlineText = __(\"your_current_plan_is_pcloud_ba\");\n } else if (plan) {\n topHeadlineText = __(\"upgrade_your_experience\");\n } else if (chosenPeriod && plans[chosenPeriod].indexOf(CRYPTO_PLAN_ID) !== -1) {\n topHeadlineText = __(\"get_pcl_crypto\");\n } else {\n topHeadlineText = __(\"choose_storage_and_price\");\n }\n }\n\n return (\n <>\n {topHeadlineText}\n \n \n \n {__(\"acclr1_home_head_bul1\", \"Top-tier encryption\")}\n \n \n \n {__(\"acclr1_plans_easy\", \"Easy file access\")}\n \n \n \n {__(\"acclr1_plans_swiss\", \"Swiss Data Protection\")}\n \n \n \n );\n };\n\n const renderJapanesePartner = () => {\n const lang = currentLang;\n if ((country === \"jp\" && lang === \"en\") || lang === \"ja\") {\n return (\n \n \n \n \n \n \n \n \n \n

\n {reactStringReplace(__(\"japanese_certification_jury_prize\"), /(%link%)/g, (match, i) => (\n \n \n {__(\"japanese_certification_jury_prize_link\")}\n \n \n ))}\n

\n
\n
\n );\n }\n };\n\n const renderJapaneseCloudAward = () => {\n const lang = currentLang;\n if ((country === \"jp\" && lang === \"en\") || lang === \"ja\") {\n return (\n \n setImagePreviewModalSrc(undefined)}\n />\n {__(\"japanese_certification_jury_prize_title\")}\n \n {__('japanese_certification_jury_prize_description_short')}\n \n {showMoreJaCloudAward &&\n \n {__('japanese_certification_jury_prize_description_long')}\n \n }\n setShowMoreJaCloudAward((showMoreJaCloudAward) => !showMoreJaCloudAward)}>\n {__('Read more')} {showMoreJaCloudAward ? : }\n \n \n setImagePreviewModalSrc(\"/images/aspic-certificate.jpg\")} />\n setImagePreviewModalSrc(\"/images/aspic-certificate-accreditation.png\")} />\n \n \n );\n }\n };\n\n const renderExitIntent = () => {\n if (hideExitIntent) {\n return null;\n }\n\n if (chosenPeriod !== \"lifetime\" && user && !user.lastsubscription && !discount) {\n return setDiscount(\"EXIT_INTENT\")} />;\n }\n\n\n if (user && (user.plan || user.business)) {\n // No need to show exit intent to user with plan or business.\n return null;\n }\n\n const handleYearExitIntentCLick = () => {\n setChosenPeriod(\"year\");\n };\n \n const pattern = /landing/i;\n if (discount && chosenPeriod !== \"year\" && !pattern.test(document.referrer)) {\n return (\n \n );\n }\n\n return null;\n }\n\n return (\n
\n {renderPageTopSection()}\n\n {renderExitIntent()}\n\n {plansType === \"storage\" ? : null}\n \n {!hideJapanesePartner ? \n renderJapanesePartner()\n : null}\n\n {loadingPlansError ? {loadingPlansError} : null}\n\n \n {!hidePlansFooter ?\n \n \n
{__(\"no_vat_or_fees_included\")}!
\n
\n {!hidePaymentLogos &&\n \n }\n
\n : null}\n \n {__(\"acclr1_plans_benefits\", \"Free plan benefits vs Paid plans benefits\")}\n \n \n \n {renderJapaneseCloudAward()}\n {!hideFeaturesForAll ?\n \n \n \n : null}\n
\n );\n};\n\nexport default PricingPageAcceleratedUI;\n\nconst MainFeatures = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n gap: 10px 36px;\n padding: 0px 20px; \n box-sizing: border-box;\n\n @media (max-width: 768px) {\n font-size: 14px;\n gap: 2px 30px;\n }\n`;\n\nconst MainFeature = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 11px;\n`\n\nconst MainFeatureText = styled.div`\n font-size: 20px;\n font-weight: 400;\n line-height: 29px;\n letter-spacing: -0.36px;\n color: #000;\n\n @media (max-width: 768px) {\n font-size: 14px;\n }\n`;\n \nconst VatIncluded = styled.div`\n color: #999;\n font-size: 14px;\n margin: 40px 0 21px 0;\n text-align: center;\n`;\n\nconst PaymentPartner = styled(UserPlanInfoContainer)`\n background: #fff;\n border-color: #eee;\n display: flex;\n align-items: center;\n\n @media (max-width: 768px) {\n flex-direction: column;\n justify-content: center;\n }\n`;\n\nconst GogoLogo = styled.div`\n display: inline-block;\n height: 55px;\n width: 200px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 200px 55px;\n background-image: url(\"/images/plans/gogo-mini.png\");\n flex-shrink: 0;\n\n @media (max-width: 768px) {\n margin: 0 auto 10px auto;\n }\n`;\n\nconst TextContainer = styled.div`\n text-align: left;\n margin-left: 20px;\n\n @media (max-width: 768px) {\n text-align: center;\n }\n`;\n\nconst FeaturesWrap = styled.div`\n padding: 40px 20px 40px 0px;\n position: relative;\n width: 100%;\n border-top: 1px solid #e4e4e4;\n`;\n\nconst JapaneseCertification = styled.div`\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.4;\n letter-spacing: normal;\n color: #707070;\n margin: 30px auto;\n box-sizing: border-box;\n max-width: 826px;\n display: flex;\n gap: 4px;\n @media (max-width: 768px) {\n padding: 0px 20px;\n }\n`;\n\nconst Link = styled.span`\n color: #17bed0;\n cursor: pointer;\n text-decoration: underline;\n`;\n\nconst StyledGogoMedal = styled(GogoMedal)`\n flex-shrink: 0;\n`;\n\nconst JapaneseCloudAwardContainer = styled.div`\n border-bottom: 1px solid #E4E4E4;\n padding: 47px 15px 72px 15px;\n`;\n\nconst JapaneseCloudAwardContainerTitle = styled.h2`\n color: #2C2C2C;\n font-family: Roboto;\n font-size: 28px;\n font-style: normal;\n font-weight: 700;\n line-height: normal;\n text-align: center;\n margin-bottom: 12px;\n letter-spacing: normal;\n`;\n\nconst ReadMoreToggle = styled.span`\n color: #17BED0;\n text-align: center;\n font-family: Roboto;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n text-decoration-line: underline;\n margin: 0 auto;\n display: block;\n cursor: pointer;\n`;\n\nconst JapaneseCertificationDescription = styled.div`\n color: #707070;\n text-align: center;\n font-family: Roboto;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: normal;\n margin-bottom: 12px;\n max-width: 830px;\n margin: 0 auto 12px auto;\n`;\n\nconst CertificatesWrapper = styled.div`\n display: flex;\n gap: 40px;\n margin: 72px auto 0 auto;\n justify-content: center;\n flex-wrap: wrap;\n @media (max-width: 768px) {\n max-width: 570px;\n }\n`;\n\nconst CertificateImage = styled.img`\n cursor: pointer;\n width: 570px;\n border-radius: 12px;\n @media (max-width: 768px) {\n width: 100%;\n }\n`;\n\nconst PaymentLogosWrapper = styled.div`\n padding: 20px 0;\n box-sizing: border-box;\n border-top: 1px solid #EEEEEE;\n border-bottom: 1px solid #EEEEEE;\n\n @media (max-width: 768px) {\n padding: 20px;\n }\n`;\n\nconst SectionHeadline = styled.div`\n margin-bottom: 40px;\n font-weight: 700;\n font-size: 28px;\n text-align: center;\n padding: 0 20px;\n box-sizing: border-box;\n\n @media (max-width: 768px) {\n font-size: 24px;\n }\n`;\n\nconst PlanComparisonWrapper = styled.div`\n padding: 36px 20px 0px 20px;\n`;","var _path, _path2, _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBigInfoIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 49,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E2E2E2\",\n d: \"M0 0h48v49H0z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-6072-3591v-4h-4v4h4zm7268 0h4v-4h-4v4zm0 5850v4h4v-4h-4zm-7268 0h-4v4h4v-4zm0-5846h7268v-8h-7268v8zm7264-4v5850h8v-5850h-8zm4 5846h-7268v8h7268v-8zm-7264 4v-5850h-8v5850h8z\",\n fill: \"#000\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#big-info-icon_svg__clip0_0_1)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M-936-199H984V881H-936z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: -296,\n y: -39,\n width: 640,\n height: 279,\n rx: 23,\n fill: \"#F0F8FF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.002 36.171c.378 0 .695-.127.95-.383.254-.255.381-.572.381-.95v-12c0-.378-.128-.694-.384-.95a1.293 1.293 0 00-.951-.383c-.378 0-.695.128-.95.383a1.292 1.292 0 00-.381.95v12c0 .378.128.694.384.95s.573.383.951.383zM24 17.711c.465 0 .855-.158 1.17-.473.314-.315.471-.704.471-1.17 0-.464-.157-.854-.472-1.169A1.59 1.59 0 0024 14.43a1.59 1.59 0 00-1.17.47 1.588 1.588 0 00-.471 1.17c0 .465.157.854.472 1.17.314.314.704.471 1.169.471zm.009 30.46c-3.319 0-6.44-.63-9.361-1.889-2.921-1.26-5.463-2.969-7.624-5.128-2.161-2.16-3.872-4.698-5.133-7.617C.631 30.618 0 27.499 0 24.18c0-3.319.63-6.439 1.89-9.36 1.259-2.922 2.968-5.463 5.127-7.625 2.16-2.161 4.699-3.872 7.618-5.132C17.553.802 20.672.17 23.99.17s6.44.63 9.361 1.89c2.921 1.26 5.463 2.969 7.624 5.128 2.161 2.159 3.872 4.698 5.133 7.617C47.369 17.725 48 20.844 48 24.163c0 3.318-.63 6.439-1.89 9.36-1.259 2.922-2.968 5.463-5.127 7.624-2.16 2.162-4.699 3.873-7.618 5.133-2.918 1.26-6.037 1.891-9.356 1.891zM24 45.505c5.956 0 11-2.067 15.133-6.2 4.134-4.134 6.2-9.178 6.2-15.134 0-5.955-2.066-11-6.2-15.133C35 4.905 29.956 2.838 24 2.838c-5.956 0-11 2.067-15.133 6.2-4.134 4.133-6.2 9.178-6.2 15.133 0 5.956 2.066 11 6.2 15.134 4.133 4.133 9.177 6.2 15.133 6.2z\",\n fill: \"url(#big-info-icon_svg__paint0_linear_0_1)\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"big-info-icon_svg__paint0_linear_0_1\",\n x1: 0,\n y1: 24.171,\n x2: 48,\n y2: 24.171,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#17BED0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.525,\n stopColor: \"#6B61EF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FA595D\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"big-info-icon_svg__clip0_0_1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n transform: \"translate(-936 -199)\",\n d: \"M0 0h1920v1080H0z\"\n })))));\n}\nexport default SvgBigInfoIcon;","import React, { useMemo } from \"react\";\nimport styled from \"styled-components\";\n\nimport { __ } from \"../../../lib/utils\";\n\nimport BigInfoIconSVG from \"../../../../new_site/images/big-info-icon.svg\";\nimport Button from \"@pcloud/web-utilities/dist/resources/components/ButtonDefault\";\nimport PlansTypeComponent from \"../styles/PlansTypeComponent\";\nimport { baseButtonCSS } from \"../styles/Plans\";\n\nconst NoPlansInfoMessage = ({\n reason,\n logoutUser = () => {},\n plansContainerBackground = \"#fff\",\n familyPageLink = \"/family.html\",\n contactUsPageLink = \"/company/contactus.html\"\n}) => {\n\n const {noPlansInfoHeader , noPlansInfoDescription} = useMemo(() => {\n let header = \"\";\n let description = \"\";\n switch (reason) {\n case \"isbusiness\":\n header = __(\"isbusiness_pricing_page_header\", \"Your account is associated with a business plan.\");\n description = __(\"isbusiness_pricing_page_description\", \"To explore individual plans, please sign out.\");\n break;\n case \"isfamily\":\n header = __(\"isfamily_pricing_page_header\", \"Your account is associated with a Family plan.\");\n description = __(\"isfamily_pricing_page_description\", \"Please go to our Family Plans page.\");\n break;\n case \"isfamilymember\":\n header = __(\"isfamily_pricing_page_header\", \"Your account is associated with a Family plan.\");\n description = __(\"isfamilymember_pricing_page_description\", \"Contact the account owner to upgrade, or sign out to view individual plans.\");\n break;\n // case \"hasplan\": case \"haslifetime\": case \"exceedquota\": case \"lowerplan\": case \"lowerperiod\": case 7 // \"notavailableforsubscription\":\n default: \n header = __(\"largest_plan_pricing_page_header\", \"You’re on the largest plan available.\");\n description = __(\"largest_plan_pricing_page_description\", \"Contact our support for more details.\");\n }\n\n return {noPlansInfoHeader: header, noPlansInfoDescription: description};\n }, [reason]);\n\n const renderNoPlansButton = () => {\n switch (reason) {\n case \"isbusiness\":\n case \"isfamilymember\": \n // Sign Out\n return ;\n case \"isfamily\": \n // Go to family\n return ;\n default: \n // Contact Us\n return ;\n }\n }\n\n return (\n \n \n \n \n\n \n \n {noPlansInfoHeader}\n \n\n \n {noPlansInfoDescription}\n \n \n\n {renderNoPlansButton()}\n \n \n \n );\n}\n\nexport default NoPlansInfoMessage;\n\nconst NoPlansInfoWrapper = styled.div`\n max-width: var(--pricing-page-content-width);\n width: calc(100% - var(--pricing-page-content-offset));\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst NoPlansInfoBox = styled.div`\n width: 640px;\n max-width: 100%;\n box-sizing: border-box;\n background: var(--alert-info-background);\n border-radius: var(--alert-info-border-radius);\n padding: var(--spacing-2xl);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n gap: var(--spacing-xl);\n margin: var(--spaces-20) 0;\n\n @media (max-width: 768px) {\n margin: var(--spacing-lg) 0 var(--spacing-3xl) 0;\n }\n\n @media (max-width: 360px) {\n padding: var(--spacing-lg);\n }\n\n a {\n ${baseButtonCSS}\n height: 38px;\n line-height: 38px;\n font-size: 15px;\n font-weight: 500;\n width: 200px;\n max-width: 100%;\n box-sizing: border-box;\n }\n`;\n\nconst NoPlansInfoTextWrapper = styled.div`\n color: var(--color-base-black);\n`;\n\nconst NoPlansInfoHeader = styled.div`\n font-size: 20px;\n font-weight: 600;\n line-height: 24px;\n`;\n\nconst NoPlansInfoDescription = styled.div`\n font-weight: 400;\n font-size: 15px;\n line-height: 24px;\n`;","//@flow\n\nimport React, { useState, useEffect } from \"react\";\n\nimport PricingPageDefaultUI from \"./views/PricingPageDefaultUI\";\n\nimport type { PeriodType, Userinfo, CurrencyType, ColorType } from \"../../lib/types/dataTypes.components\";\n\nimport usePrevious from \"@pcloud/web-utilities/dist/hooks/usePrevious\";\n\nimport { __, addHrefSearch } from \"../../lib/utils\";\n\nimport { rcookie, hrefSearch, setcookie } from \"@pcloud/web-utilities/dist/lib/utils\";\n\nimport { PlanType } from \"../../lib/types/PlanType\";\n\nimport useLoadPlans from \"./hooks/LoadPlansHook\";\nimport useUser from \"./hooks/UserHook\";\nimport PricingPageAcceleratedUI from \"./views/PricingPageAcceleratedUI\";\nimport NoPlansInfoMessage from \"./views/NoPlansInfoMessage\";\n\ntype Props = {\n globalUserInfo: Userinfo,\n hidePlansFooter: boolean,\n hideVatIncluded: boolean,\n hideExitIntent: boolean,\n hidePageTitle: boolean,\n hideFeaturesForAll: boolean,\n hideUsedByBar: boolean,\n hideFamilySection: boolean,\n hideTrafficSection: boolean,\n hidePaymentLogos: boolean,\n showComparePrices: boolean,\n showBestPriceByRandomGirl: boolean,\n maxCustomStorageCount: number,\n checkoutPageLink: string,\n familyPageLink: string,\n trafficPageLink: string,\n contactUsPageLink: string,\n stopPageLoading: () => void,\n showPageLoading: () => void,\n activateMonthlyPlans: {value: boolean},\n plansType: \"storage\" | \"crypto\" | \"traffic\" | \"storage_family\" | \"passwords\",\n plansVersion: string,\n layout: \"default\" | \"accelerated\",\n showPlanDescriptionText: boolean,\n hideJapanesePartner: boolean,\n showTextUnderPrices: boolean,\n maxNumberOfFeaturesToShow: number, // -1 -> no limit\n periodsMainColor: ColorType,\n periodsBackgroundColor: string,\n initialHiddenPeriods: Array,\n defaultPeriod: PeriodType,\n analytics: {\n category: string,\n label: string,\n pageTitle: string\n },\n switchPlansFromSamePeriodByTabs: boolean,\n onTabSwitch: (plans: [PlanType], period: PeriodType, currency: CurrencyType) => void,\n tabsTitle: string,\n subtitlePosition: \"top\" | \"bottpm\",\n showSaveLabel: boolean,\n logoutUser: () => void,\n plansContainerBackground: string,\n topHeadlineBackground: string\n}\n\nconst PricingPage = ({\n globalUserInfo,\n hidePlansFooter,\n hideVatIncluded,\n hideExitIntent,\n hidePageTitle,\n hideFeaturesForAll,\n hideUsedByBar,\n hideFamilySection,\n hideTrafficSection,\n hidePaymentLogos,\n hideDiscountPercentage,\n showComparePrices,\n showBestPriceByRandomGirl,\n abTest = false,\n checkoutPageLink = \"/checkout.html\",\n familyPageLink = \"/family.html\",\n trafficPageLink = \"/additional-traffic.html\",\n contactUsPageLink = \"/company/contactus.html\",\n stopPageLoading = () => {},\n showPageLoading = () => {},\n activateMonthlyPlans = null,\n plansType = \"storage\",\n plansVersion = \"0.0.0\",\n layout = \"default\",\n showPlanDescriptionText = false,\n hideJapanesePartner = false,\n showTextUnderPrices = true,\n maxNumberOfFeaturesToShow = 2,\n periodsMainColor = \"cyan\",\n periodsBackgroundColor = \"#ebebeb\",\n initialHiddenPeriods = null,\n defaultPeriod = \"lifetime\",\n analytics = null,\n switchPlansFromSamePeriodByTabs = false,\n onTabSwitch = null,\n tabsTitle = null,\n subtitlePosition,\n showSaveLabel,\n logoutUser = () => {},\n plansContainerBackground = null,\n topHeadlineBackground = null\n}: Props) => {\n // URL Parameters\n let URL_Discount: string | false = hrefSearch(\"discount\");\n let URL_Downgrade: boolean = hrefSearch(\"downgrade\");\n // END of URL Parameters\n\n let discount = URL_Discount || rcookie(\"discount\");\n \n if (discount === \"null\") {\n discount = null;\n }\n\n const [chosenPeriod, setChosenPeriod] = useState(null);\n const [discountCode, setDiscountCode] = useState(discount);\n\n const getInitialHiddenPeriods = () => initialHiddenPeriods !== null ? initialHiddenPeriods : (hrefSearch(\"period\") !== \"month\" && plansVersion === \"0.0.0\" ? [\"month\"] : []);\n const [hiddenPeriods, setHiddenPeriods] = useState(getInitialHiddenPeriods);\n\n const prevChosenPeriod = usePrevious(chosenPeriod);\n\n const country = pCloudUserIP && pCloudUserIP.country ? pCloudUserIP.country : \"fr\";\n\n (chosenPeriod: PeriodType);\n (discountCode: string | null | false);\n (hiddenPeriods: Array);\n\n const {\n user,\n onLoginCallback,\n onLogoutCallback\n } = useUser({\n globalUserInfo,\n showPageLoading,\n setHiddenPeriods,\n getInitialHiddenPeriods\n });\n\n const {\n plans,\n currency,\n loadingPlans,\n loadingPlansError,\n noPlans,\n } = useLoadPlans({\n user,\n plansType,\n plansVersion,\n discountCode,\n abTest,\n downgrade: Boolean(URL_Downgrade),\n stopPageLoading\n });\n\n useEffect(() => {\n login_callback = login_callback ? [].concat(login_callback) : [];\n register_callback = register_callback ? [].concat(register_callback) : [];\n if (plansType !== \"passwords\") {\n logout_callback = logout_callback ? [].concat(logout_callback) : [];\n } else {\n pass_logout_callback = pass_logout_callback ? [].concat(pass_logout_callback) : [];\n }\n \n login_callback.push(onLoginCallback);\n register_callback.push((userData) => onLoginCallback(userData, \"onAuthAction\"));\n \n if (plansType !== \"passwords\") {\n logout_callback.push(onLogoutCallback);\n } else {\n pass_logout_callback.push(onLogoutCallback);\n }\n\n // Check if we are already logged in on this moment.\n if (user === null && pCloud && pCloud.user) {\n onLoginCallback(pCloud.user);\n }\n\n if (rcookie(\"discount\") && URL_Discount && rcookie(\"discount\") !== URL_Discount) {\n setcookie(\"discount\", URL_Discount);\n }\n }, []);\n\n useEffect(() => {\n if (typeof prevChosenPeriod !== \"undefined\" && chosenPeriod !== prevChosenPeriod) {\n // Fix URL params when changed chosenPeriod.\n addHrefSearch([\"period=\" + chosenPeriod]);\n }\n\n if (hiddenPeriods.indexOf(chosenPeriod) !== -1) {\n // Remove from hidden periods.\n setHiddenPeriods(hiddenPeriods.filter(period => period !== chosenPeriod));\n }\n }, [chosenPeriod]);\n\n const scrollToTop = () => {\n window.scrollTo(0);\n };\n\n useEffect(() => {\n if (activateMonthlyPlans && activateMonthlyPlans.value) {\n switchToMonthlyPlans();\n }\n }, [activateMonthlyPlans]);\n\n const switchToMonthlyPlans = () => {\n if (chosenPeriod !== \"month\") {\n setChosenPeriod(\"month\");\n }\n\n scrollToTop();\n };\n\n if (!plans) {\n return null;\n }\n\n if (noPlans !== null) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default PricingPage;\n","import React from \"react\";\n\nimport _move from \"../lib/move\";\nimport componentMount from \"../lib/componentMount\"\nimport PricingPage from \"../components/PricingPage/PricingPage\";\n\nconst _attachList = [\n {\n attach: self,\n list: [\n //components\n \"PricingPage\"\n ]\n }\n]\n\nconst prepComponents = {\n PricingPage: componentMount(props => )\n};\n\n_move(prepComponents, _attachList);","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tES5ArrayState,\n\tProxyArrayState,\n\tMapState,\n\tES5ObjectState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tProxyType,\n\tArchtype,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tswitch (state.type_) {\n\t\t\tcase ProxyType.ProxyObject:\n\t\t\tcase ProxyType.ES5Object:\n\t\t\tcase ProxyType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t\tcase ProxyType.ES5Array:\n\t\t\tcase ProxyType.ProxyArray:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ProxyType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\t(state as any) as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ES5ArrayState | ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tif (assigned_[i] && copy_[i] !== base_[i]) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(base_[i])\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tif (base_.length < copy_.length) {\n\t\t\tinversePatches.push({\n\t\t\t\top: REPLACE,\n\t\t\t\tpath: basePath.concat([\"length\"]),\n\t\t\t\tvalue: base_.length\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ES5ObjectState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key)\n\t\t\tconst value = get(copy_!, key)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(op === REMOVE ? {op, path} : {op, path, value})\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\tbaseValue: any,\n\t\treplacement: any,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tpatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: baseValue\n\t\t})\n\t}\n\n\tfunction applyPatches_(draft: T, patches: Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tlet p = path[i]\n\t\t\t\tif (typeof p !== \"string\" && typeof p !== \"number\") {\n\t\t\t\t\tp = \"\" + p\n\t\t\t\t}\n\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === Archtype.Object || parentType === Archtype.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === \"constructor\")\n\t\t\t\t)\n\t\t\t\t\tdie(24)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\") die(24)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(15, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\tdie(16)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn key === \"-\"\n\t\t\t\t\t\t\t\t? base.push(value)\n\t\t\t\t\t\t\t\t: base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(17, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (Array.isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(Object.getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(\"Patches\", {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_\n\t})\n}\n","// types only!\nimport {\n\tImmerState,\n\tAnyMap,\n\tAnySet,\n\tMapState,\n\tSetState,\n\tDRAFT_STATE,\n\tgetCurrentScope,\n\tlatest,\n\titeratorSymbol,\n\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tProxyType,\n\tdie,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\t/* istanbul ignore next */\n\tvar extendStatics = function(d: any, b: any): any {\n\t\textendStatics =\n\t\t\tObject.setPrototypeOf ||\n\t\t\t({__proto__: []} instanceof Array &&\n\t\t\t\tfunction(d, b) {\n\t\t\t\t\td.__proto__ = b\n\t\t\t\t}) ||\n\t\t\tfunction(d, b) {\n\t\t\t\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]\n\t\t\t}\n\t\treturn extendStatics(d, b)\n\t}\n\n\t// Ugly hack to resolve #502 and inherit built in Map / Set\n\tfunction __extends(d: any, b: any): any {\n\t\textendStatics(d, b)\n\t\tfunction __(this: any): any {\n\t\t\tthis.constructor = d\n\t\t}\n\t\td.prototype =\n\t\t\t// @ts-ignore\n\t\t\t((__.prototype = b.prototype), new __())\n\t}\n\n\tconst DraftMap = (function(_super) {\n\t\t__extends(DraftMap, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftMap(this: any, target: AnyMap, parent?: ImmerState): any {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Map,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tassigned_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this as any,\n\t\t\t\tisManual_: false,\n\t\t\t\trevoked_: false\n\t\t\t} as MapState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftMap.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: false,\n\t\t\t// configurable: true\n\t\t})\n\n\t\tp.has = function(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tp.set = function(key: any, value: any) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!latest(state).has(key) || latest(state).get(key) !== value) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t\tstate.copy_!.set(key, value)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(key: any): boolean {\n\t\t\tif (!this.has(key)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareMapCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\tif (state.base_.has(key)) {\n\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t} else {\n\t\t\t\tstate.assigned_!.delete(key)\n\t\t\t}\n\t\t\tstate.copy_!.delete(key)\n\t\t\treturn true\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_ = new Map()\n\t\t\t\teach(state.base_, key => {\n\t\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t\t})\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.forEach = function(\n\t\t\tcb: (value: any, key: any, self: any) => void,\n\t\t\tthisArg?: any\n\t\t) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tlatest(state).forEach((_value: any, key: any, _map: any) => {\n\t\t\t\tcb.call(thisArg, this.get(key), key, this)\n\t\t\t})\n\t\t}\n\n\t\tp.get = function(key: any): any {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tconst value = latest(state).get(key)\n\t\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tif (value !== state.base_.get(key)) {\n\t\t\t\treturn value // either already drafted or reassigned\n\t\t\t}\n\t\t\t// despite what it looks, this creates a draft only once, see above condition\n\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\tprepareMapCopy(state)\n\t\t\tstate.copy_!.set(key, draft)\n\t\t\treturn draft\n\t\t}\n\n\t\tp.keys = function(): IterableIterator {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tp.values = function(): IterableIterator {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.values(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp.entries = function(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.entries(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: [r.value, value]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.entries()\n\t\t}\n\n\t\treturn DraftMap\n\t})(Map)\n\n\tfunction proxyMap_(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftMap(target, parent)\n\t}\n\n\tfunction prepareMapCopy(state: MapState) {\n\t\tif (!state.copy_) {\n\t\t\tstate.assigned_ = new Map()\n\t\t\tstate.copy_ = new Map(state.base_)\n\t\t}\n\t}\n\n\tconst DraftSet = (function(_super) {\n\t\t__extends(DraftSet, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftSet(this: any, target: AnySet, parent?: ImmerState) {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Set,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this,\n\t\t\t\tdrafts_: new Map(),\n\t\t\t\trevoked_: false,\n\t\t\t\tisManual_: false\n\t\t\t} as SetState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftSet.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: true,\n\t\t})\n\n\t\tp.has = function(value: any): boolean {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\t// bit of trickery here, to be able to recognize both the value, and the draft of its value\n\t\t\tif (!state.copy_) {\n\t\t\t\treturn state.base_.has(value)\n\t\t\t}\n\t\t\tif (state.copy_.has(value)) return true\n\t\t\tif (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n\t\t\t\treturn true\n\t\t\treturn false\n\t\t}\n\n\t\tp.add = function(value: any): any {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!this.has(value)) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.add(value)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(value: any): any {\n\t\t\tif (!this.has(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\treturn (\n\t\t\t\tstate.copy_!.delete(value) ||\n\t\t\t\t(state.drafts_.has(value)\n\t\t\t\t\t? state.copy_!.delete(state.drafts_.get(value))\n\t\t\t\t\t: /* istanbul ignore next */ false)\n\t\t\t)\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.values = function(): IterableIterator {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.values()\n\t\t}\n\n\t\tp.entries = function entries(): IterableIterator<[any, any]> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.entries()\n\t\t}\n\n\t\tp.keys = function(): IterableIterator {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp.forEach = function forEach(cb: any, thisArg?: any) {\n\t\t\tconst iterator = this.values()\n\t\t\tlet result = iterator.next()\n\t\t\twhile (!result.done) {\n\t\t\t\tcb.call(thisArg, result.value, result.value, this)\n\t\t\t\tresult = iterator.next()\n\t\t\t}\n\t\t}\n\n\t\treturn DraftSet\n\t})(Set)\n\n\tfunction proxySet_(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftSet(target, parent)\n\t}\n\n\tfunction prepareSetCopy(state: SetState) {\n\t\tif (!state.copy_) {\n\t\t\t// create drafts for all entries to preserve insertion order\n\t\t\tstate.copy_ = new Set()\n\t\t\tstate.base_.forEach(value => {\n\t\t\t\tif (isDraftable(value)) {\n\t\t\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\t\t\tstate.drafts_.set(value, draft)\n\t\t\t\t\tstate.copy_!.add(draft)\n\t\t\t\t} else {\n\t\t\t\t\tstate.copy_!.add(value)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"MapSet\", {proxyMap_, proxySet_})\n}\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","import {enableES5} from \"./es5\"\nimport {enableMapSet} from \"./mapset\"\nimport {enablePatches} from \"./patches\"\n\nexport function enableAllPlugins() {\n\tenableES5()\n\tenableMapSet()\n\tenablePatches()\n}\n","\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./immer.cjs.production.min.js')\n} else {\n module.exports = require('./immer.cjs.development.js')\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","\n/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n */\nexport class ObliviousSet {\n public readonly set = new Set();\n public readonly timeMap = new Map();\n constructor(\n public readonly ttl: number\n ) { }\n\n has(value: T): boolean {\n return this.set.has(value);\n }\n\n add(value: T): void {\n this.timeMap.set(value, now());\n this.set.add(value);\n\n /**\n * When a new value is added,\n * start the cleanup at the next tick\n * to not block the cpu for more important stuff\n * that might happen.\n */\n setTimeout(() => {\n removeTooOldValues(this);\n }, 0);\n }\n\n clear() {\n this.set.clear();\n this.timeMap.clear();\n }\n}\n\n\n/**\n * Removes all entries from the set\n * where the TTL has expired\n */\nexport function removeTooOldValues(\n obliviousSet: ObliviousSet\n) {\n const olderThen = now() - obliviousSet.ttl;\n const iterator = obliviousSet.set[Symbol.iterator]();\n\n /**\n * Because we can assume the new values are added at the bottom,\n * we start from the top and stop as soon as we reach a non-too-old value.\n */\n while (true) {\n const value = iterator.next().value;\n if (!value) {\n return; // no more elements\n }\n const time = obliviousSet.timeMap.get(value);\n if (time < olderThen) {\n obliviousSet.timeMap.delete(value);\n obliviousSet.set.delete(value);\n } else {\n // We reached a value that is not old enough\n return;\n }\n }\n}\n\nexport function now(): number {\n return new Date().getTime();\n}\n\n\n","export var KEY_PREFIX = 'persist:';\nexport var FLUSH = 'persist/FLUSH';\nexport var REHYDRATE = 'persist/REHYDRATE';\nexport var PAUSE = 'persist/PAUSE';\nexport var PERSIST = 'persist/PERSIST';\nexport var PURGE = 'persist/PURGE';\nexport var REGISTER = 'persist/REGISTER';\nexport var DEFAULT_VERSION = -1;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n autoMergeLevel1: \n - merges 1 level of substate\n - skips substate if already modified\n*/\nexport default function autoMergeLevel1(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n } // otherwise hard set the new value\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}","import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n // defaults\n var blacklist = config.blacklist || null;\n var whitelist = config.whitelist || null;\n var transforms = config.transforms || [];\n var throttle = config.throttle || 0;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var serialize;\n\n if (config.serialize === false) {\n serialize = function serialize(x) {\n return x;\n };\n } else if (typeof config.serialize === 'function') {\n serialize = config.serialize;\n } else {\n serialize = defaultSerialize;\n }\n\n var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n var lastState = {};\n var stagedState = {};\n var keysToProcess = [];\n var timeIterator = null;\n var writePromise = null;\n\n var update = function update(state) {\n // add any changed keys to the queue\n Object.keys(state).forEach(function (key) {\n if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n if (lastState[key] === state[key]) return; // value unchanged? noop\n\n if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n keysToProcess.push(key); // add key to queue\n }); //if any key is missing in the new state which was present in the lastState,\n //add it for processing too\n\n Object.keys(lastState).forEach(function (key) {\n if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n keysToProcess.push(key);\n }\n }); // start the time iterator if not running (read: throttle)\n\n if (timeIterator === null) {\n timeIterator = setInterval(processNextKey, throttle);\n }\n\n lastState = state;\n };\n\n function processNextKey() {\n if (keysToProcess.length === 0) {\n if (timeIterator) clearInterval(timeIterator);\n timeIterator = null;\n return;\n }\n\n var key = keysToProcess.shift();\n var endState = transforms.reduce(function (subState, transformer) {\n return transformer.in(subState, key, lastState);\n }, lastState[key]);\n\n if (endState !== undefined) {\n try {\n stagedState[key] = serialize(endState);\n } catch (err) {\n console.error('redux-persist/createPersistoid: error serializing state', err);\n }\n } else {\n //if the endState is undefined, no need to persist the existing serialized content\n delete stagedState[key];\n }\n\n if (keysToProcess.length === 0) {\n writeStagedState();\n }\n }\n\n function writeStagedState() {\n // cleanup any removed keys just before write.\n Object.keys(stagedState).forEach(function (key) {\n if (lastState[key] === undefined) {\n delete stagedState[key];\n }\n });\n writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n }\n\n function passWhitelistBlacklist(key) {\n if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n if (blacklist && blacklist.indexOf(key) !== -1) return false;\n return true;\n }\n\n function onWriteFail(err) {\n // @TODO add fail handlers (typically storage full)\n if (writeFailHandler) writeFailHandler(err);\n\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('Error storing data', err);\n }\n }\n\n var flush = function flush() {\n while (keysToProcess.length !== 0) {\n processNextKey();\n }\n\n return writePromise || Promise.resolve();\n }; // return `persistoid`\n\n\n return {\n update: update,\n flush: flush\n };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n return JSON.stringify(data);\n}","import { KEY_PREFIX } from './constants';\nexport default function getStoredState(config) {\n var transforms = config.transforms || [];\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n var storage = config.storage;\n var debug = config.debug;\n var deserialize;\n\n if (config.deserialize === false) {\n deserialize = function deserialize(x) {\n return x;\n };\n } else if (typeof config.deserialize === 'function') {\n deserialize = config.deserialize;\n } else {\n deserialize = defaultDeserialize;\n }\n\n return storage.getItem(storageKey).then(function (serialized) {\n if (!serialized) return undefined;else {\n try {\n var state = {};\n var rawState = deserialize(serialized);\n Object.keys(rawState).forEach(function (key) {\n state[key] = transforms.reduceRight(function (subState, transformer) {\n return transformer.out(subState, key, rawState);\n }, deserialize(rawState[key]));\n });\n return state;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log(\"redux-persist/getStoredState: Error restoring data \".concat(serialized), err);\n throw err;\n }\n }\n });\n}\n\nfunction defaultDeserialize(serial) {\n return JSON.parse(serial);\n}","import { KEY_PREFIX } from './constants';\nexport default function purgeStoredState(config) {\n var storage = config.storage;\n var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n return storage.removeItem(storageKey, warnIfRemoveError);\n}\n\nfunction warnIfRemoveError(err) {\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('redux-persist/purgeStoredState: Error purging data stored state', err);\n }\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { FLUSH, PAUSE, PERSIST, PURGE, REHYDRATE, DEFAULT_VERSION } from './constants';\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1';\nimport createPersistoid from './createPersistoid';\nimport defaultGetStoredState from './getStoredState';\nimport purgeStoredState from './purgeStoredState';\nvar DEFAULT_TIMEOUT = 5000;\n/*\n @TODO add validation / handling for:\n - persisting a reducer which has nested _persist\n - handling actions that fire before reydrate is called\n*/\n\nexport default function persistReducer(config, baseReducer) {\n if (process.env.NODE_ENV !== 'production') {\n if (!config) throw new Error('config is required for persistReducer');\n if (!config.key) throw new Error('key is required in persistor config');\n if (!config.storage) throw new Error(\"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\");\n }\n\n var version = config.version !== undefined ? config.version : DEFAULT_VERSION;\n var debug = config.debug || false;\n var stateReconciler = config.stateReconciler === undefined ? autoMergeLevel1 : config.stateReconciler;\n var getStoredState = config.getStoredState || defaultGetStoredState;\n var timeout = config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT;\n var _persistoid = null;\n var _purge = false;\n var _paused = true;\n\n var conditionalUpdate = function conditionalUpdate(state) {\n // update the persistoid only if we are rehydrated and not paused\n state._persist.rehydrated && _persistoid && !_paused && _persistoid.update(state);\n return state;\n };\n\n return function (state, action) {\n var _ref = state || {},\n _persist = _ref._persist,\n rest = _objectWithoutProperties(_ref, [\"_persist\"]); // $FlowIgnore need to update State type\n\n\n var restState = rest;\n\n if (action.type === PERSIST) {\n var _sealed = false;\n\n var _rehydrate = function _rehydrate(payload, err) {\n // dev warning if we are already sealed\n if (process.env.NODE_ENV !== 'production' && _sealed) console.error(\"redux-persist: rehydrate for \\\"\".concat(config.key, \"\\\" called after timeout.\"), payload, err); // only rehydrate if we are not already sealed\n\n if (!_sealed) {\n action.rehydrate(config.key, payload, err);\n _sealed = true;\n }\n };\n\n timeout && setTimeout(function () {\n !_sealed && _rehydrate(undefined, new Error(\"redux-persist: persist timed out for persist key \\\"\".concat(config.key, \"\\\"\")));\n }, timeout); // @NOTE PERSIST resumes if paused.\n\n _paused = false; // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n\n if (!_persistoid) _persistoid = createPersistoid(config); // @NOTE PERSIST can be called multiple times, noop after the first\n\n if (_persist) {\n // We still need to call the base reducer because there might be nested\n // uses of persistReducer which need to be aware of the PERSIST action\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n }\n\n if (typeof action.rehydrate !== 'function' || typeof action.register !== 'function') throw new Error('redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.');\n action.register(config.key);\n getStoredState(config).then(function (restoredState) {\n var migrate = config.migrate || function (s, v) {\n return Promise.resolve(s);\n };\n\n migrate(restoredState, version).then(function (migratedState) {\n _rehydrate(migratedState);\n }, function (migrateErr) {\n if (process.env.NODE_ENV !== 'production' && migrateErr) console.error('redux-persist: migration error', migrateErr);\n\n _rehydrate(undefined, migrateErr);\n });\n }, function (err) {\n _rehydrate(undefined, err);\n });\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: {\n version: version,\n rehydrated: false\n }\n });\n } else if (action.type === PURGE) {\n _purge = true;\n action.result(purgeStoredState(config));\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === FLUSH) {\n action.result(_persistoid && _persistoid.flush());\n return _objectSpread({}, baseReducer(restState, action), {\n _persist: _persist\n });\n } else if (action.type === PAUSE) {\n _paused = true;\n } else if (action.type === REHYDRATE) {\n // noop on restState if purging\n if (_purge) return _objectSpread({}, restState, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n }) // @NOTE if key does not match, will continue to default else below\n\n });\n\n if (action.key === config.key) {\n var reducedState = baseReducer(restState, action);\n var inboundState = action.payload; // only reconcile state if stateReconciler and inboundState are both defined\n\n var reconciledRest = stateReconciler !== false && inboundState !== undefined ? stateReconciler(inboundState, state, reducedState, config) : reducedState;\n\n var _newState = _objectSpread({}, reconciledRest, {\n _persist: _objectSpread({}, _persist, {\n rehydrated: true\n })\n });\n\n return conditionalUpdate(_newState);\n }\n } // if we have not already handled PERSIST, straight passthrough\n\n\n if (!_persist) return baseReducer(state, action); // run base reducer:\n // is state modified ? return original : return updated\n\n var newState = baseReducer(restState, action);\n if (newState === restState) return state;\n return conditionalUpdate(_objectSpread({}, newState, {\n _persist: _persist\n }));\n };\n}","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n autoMergeLevel2: \n - merges 2 level of substate\n - skips substate if already modified\n - this is essentially redux-perist v4 behavior\n*/\nexport default function autoMergeLevel2(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n }\n\n if (isPlainEnoughObject(reducedState[key])) {\n // if object is plain enough shallow merge the new values (hence \"Level2\")\n newState[key] = _objectSpread({}, newState[key], {}, inboundState[key]);\n return;\n } // otherwise hard set\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}\n\nfunction isPlainEnoughObject(o) {\n return o !== null && !Array.isArray(o) && _typeof(o) === 'object';\n}","import { combineReducers } from 'redux';\nimport persistReducer from './persistReducer';\nimport autoMergeLevel2 from './stateReconciler/autoMergeLevel2';\n// combineReducers + persistReducer with stateReconciler defaulted to autoMergeLevel2\nexport default function persistCombineReducers(config, reducers) {\n config.stateReconciler = config.stateReconciler === undefined ? autoMergeLevel2 : config.stateReconciler;\n return persistReducer(config, combineReducers(reducers));\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createStore } from 'redux';\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants';\nvar initialState = {\n registry: [],\n bootstrapped: false\n};\n\nvar persistorReducer = function persistorReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case REGISTER:\n return _objectSpread({}, state, {\n registry: [].concat(_toConsumableArray(state.registry), [action.key])\n });\n\n case REHYDRATE:\n var firstIndex = state.registry.indexOf(action.key);\n\n var registry = _toConsumableArray(state.registry);\n\n registry.splice(firstIndex, 1);\n return _objectSpread({}, state, {\n registry: registry,\n bootstrapped: registry.length === 0\n });\n\n default:\n return state;\n }\n};\n\nexport default function persistStore(store, options, cb) {\n // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n if (process.env.NODE_ENV !== 'production') {\n var optionsToTest = options || {};\n var bannedKeys = ['blacklist', 'whitelist', 'transforms', 'storage', 'keyPrefix', 'migrate'];\n bannedKeys.forEach(function (k) {\n if (!!optionsToTest[k]) console.error(\"redux-persist: invalid option passed to persistStore: \\\"\".concat(k, \"\\\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.\"));\n });\n }\n\n var boostrappedCb = cb || false;\n\n var _pStore = createStore(persistorReducer, initialState, options && options.enhancer ? options.enhancer : undefined);\n\n var register = function register(key) {\n _pStore.dispatch({\n type: REGISTER,\n key: key\n });\n };\n\n var rehydrate = function rehydrate(key, payload, err) {\n var rehydrateAction = {\n type: REHYDRATE,\n payload: payload,\n err: err,\n key: key // dispatch to `store` to rehydrate and `persistor` to track result\n\n };\n store.dispatch(rehydrateAction);\n\n _pStore.dispatch(rehydrateAction);\n\n if (boostrappedCb && persistor.getState().bootstrapped) {\n boostrappedCb();\n boostrappedCb = false;\n }\n };\n\n var persistor = _objectSpread({}, _pStore, {\n purge: function purge() {\n var results = [];\n store.dispatch({\n type: PURGE,\n result: function result(purgeResult) {\n results.push(purgeResult);\n }\n });\n return Promise.all(results);\n },\n flush: function flush() {\n var results = [];\n store.dispatch({\n type: FLUSH,\n result: function result(flushResult) {\n results.push(flushResult);\n }\n });\n return Promise.all(results);\n },\n pause: function pause() {\n store.dispatch({\n type: PAUSE\n });\n },\n persist: function persist() {\n store.dispatch({\n type: PERSIST,\n register: register,\n rehydrate: rehydrate\n });\n }\n });\n\n if (!(options && options.manualPersist)) {\n persistor.persist();\n }\n\n return persistor;\n}","import { DEFAULT_VERSION } from './constants';\nexport default function createMigrate(migrations, config) {\n var _ref = config || {},\n debug = _ref.debug;\n\n return function (state, currentVersion) {\n if (!state) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: no inbound state, skipping migration');\n return Promise.resolve(undefined);\n }\n\n var inboundVersion = state._persist && state._persist.version !== undefined ? state._persist.version : DEFAULT_VERSION;\n\n if (inboundVersion === currentVersion) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: versions match, noop migration');\n return Promise.resolve(state);\n }\n\n if (inboundVersion > currentVersion) {\n if (process.env.NODE_ENV !== 'production') console.error('redux-persist: downgrading version is not supported');\n return Promise.resolve(state);\n }\n\n var migrationKeys = Object.keys(migrations).map(function (ver) {\n return parseInt(ver);\n }).filter(function (key) {\n return currentVersion >= key && key > inboundVersion;\n }).sort(function (a, b) {\n return a - b;\n });\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: migrationKeys', migrationKeys);\n\n try {\n var migratedState = migrationKeys.reduce(function (state, versionKey) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: running migration for versionKey', versionKey);\n return migrations[versionKey](state);\n }, state);\n return Promise.resolve(migratedState);\n } catch (err) {\n return Promise.reject(err);\n }\n };\n}","export default function createTransform( // @NOTE inbound: transform state coming from redux on its way to being serialized and stored\ninbound, // @NOTE outbound: transform state coming from storage, on its way to be rehydrated into redux\noutbound) {\n var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var whitelist = config.whitelist || null;\n var blacklist = config.blacklist || null;\n\n function whitelistBlacklistCheck(key) {\n if (whitelist && whitelist.indexOf(key) === -1) return true;\n if (blacklist && blacklist.indexOf(key) !== -1) return true;\n return false;\n }\n\n return {\n in: function _in(state, key, fullState) {\n return !whitelistBlacklistCheck(key) && inbound ? inbound(state, key, fullState) : state;\n },\n out: function out(state, key, fullState) {\n return !whitelistBlacklistCheck(key) && outbound ? outbound(state, key, fullState) : state;\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = autoMergeLevel2;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n autoMergeLevel2: \n - merges 2 level of substate\n - skips substate if already modified\n - this is essentially redux-perist v4 behavior\n*/\nfunction autoMergeLevel2(inboundState, originalState, reducedState, _ref) {\n var debug = _ref.debug;\n\n var newState = _objectSpread({}, reducedState); // only rehydrate if inboundState exists and is an object\n\n\n if (inboundState && _typeof(inboundState) === 'object') {\n Object.keys(inboundState).forEach(function (key) {\n // ignore _persist data\n if (key === '_persist') return; // if reducer modifies substate, skip auto rehydration\n\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist/stateReconciler: sub state for key `%s` modified, skipping.', key);\n return;\n }\n\n if (isPlainEnoughObject(reducedState[key])) {\n // if object is plain enough shallow merge the new values (hence \"Level2\")\n newState[key] = _objectSpread({}, newState[key], {}, inboundState[key]);\n return;\n } // otherwise hard set\n\n\n newState[key] = inboundState[key];\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && debug && inboundState && _typeof(inboundState) === 'object') console.log(\"redux-persist/stateReconciler: rehydrated keys '\".concat(Object.keys(inboundState).join(', '), \"'\"));\n return newState;\n}\n\nfunction isPlainEnoughObject(o) {\n return o !== null && !Array.isArray(o) && _typeof(o) === 'object';\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n var storage = (0, _getStorage.default)(type);\n return {\n getItem: function getItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.getItem(key));\n });\n },\n setItem: function setItem(key, item) {\n return new Promise(function (resolve, reject) {\n resolve(storage.setItem(key, item));\n });\n },\n removeItem: function removeItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.removeItem(key));\n });\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n getItem: noop,\n setItem: noop,\n removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n return false;\n }\n\n try {\n var storage = self[storageType];\n var testKey = \"redux-persist \".concat(storageType, \" test\");\n storage.setItem(testKey, 'test');\n storage.getItem(testKey);\n storage.removeItem(testKey);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n return false;\n }\n\n return true;\n}\n\nfunction getStorage(type) {\n var storageType = \"\".concat(type, \"Storage\");\n if (hasStorage(storageType)) return self[storageType];else {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n }\n\n return noopStorage;\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initMessageListener = exports.initStateWithPrevTab = exports.withReduxStateSync = exports.createReduxStateSync = exports.createStateSyncMiddleware = exports.WINDOW_STATE_SYNC_ID = exports.INIT_MESSAGE_LISTENER = exports.RECEIVE_INIT_STATE = exports.SEND_INIT_STATE = exports.GET_INIT_STATE = undefined;\nexports.generateUuidForAction = generateUuidForAction;\nexports.isActionAllowed = isActionAllowed;\nexports.isActionSynced = isActionSynced;\nexports.MessageListener = MessageListener;\n\nvar _broadcastChannel = require('broadcast-channel');\n\nvar lastUuid = 0;\nvar GET_INIT_STATE = exports.GET_INIT_STATE = '&_GET_INIT_STATE';\nvar SEND_INIT_STATE = exports.SEND_INIT_STATE = '&_SEND_INIT_STATE';\nvar RECEIVE_INIT_STATE = exports.RECEIVE_INIT_STATE = '&_RECEIVE_INIT_STATE';\nvar INIT_MESSAGE_LISTENER = exports.INIT_MESSAGE_LISTENER = '&_INIT_MESSAGE_LISTENER';\n\nvar defaultConfig = {\n channel: 'redux_state_sync',\n predicate: null,\n blacklist: [],\n whitelist: [],\n broadcastChannelOption: undefined,\n prepareState: function prepareState(state) {\n return state;\n },\n receiveState: function receiveState(prevState, nextState) {\n return nextState;\n }\n};\n\nvar getIniteState = function getIniteState() {\n return { type: GET_INIT_STATE };\n};\nvar sendIniteState = function sendIniteState() {\n return { type: SEND_INIT_STATE };\n};\nvar receiveIniteState = function receiveIniteState(state) {\n return { type: RECEIVE_INIT_STATE, payload: state };\n};\nvar initListener = function initListener() {\n return { type: INIT_MESSAGE_LISTENER };\n};\n\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n\nfunction guid() {\n return '' + s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\n// generate current window unique id\nvar WINDOW_STATE_SYNC_ID = exports.WINDOW_STATE_SYNC_ID = guid();\n// export for test\nfunction generateUuidForAction(action) {\n var stampedAction = action;\n stampedAction.$uuid = guid();\n stampedAction.$wuid = WINDOW_STATE_SYNC_ID;\n return stampedAction;\n}\n// export for test\nfunction isActionAllowed(_ref) {\n var predicate = _ref.predicate,\n blacklist = _ref.blacklist,\n whitelist = _ref.whitelist;\n\n var allowed = function allowed() {\n return true;\n };\n\n if (predicate && typeof predicate === 'function') {\n allowed = predicate;\n } else if (Array.isArray(blacklist)) {\n allowed = function allowed(action) {\n return blacklist.indexOf(action.type) < 0;\n };\n } else if (Array.isArray(whitelist)) {\n allowed = function allowed(action) {\n return whitelist.indexOf(action.type) >= 0;\n };\n }\n return allowed;\n}\n// export for test\nfunction isActionSynced(action) {\n return !!action.$isSync;\n}\n// export for test\nfunction MessageListener(_ref2) {\n var channel = _ref2.channel,\n dispatch = _ref2.dispatch,\n allowed = _ref2.allowed;\n\n var isSynced = false;\n var tabs = {};\n this.handleOnMessage = function (stampedAction) {\n // Ignore if this action is triggered by this window\n if (stampedAction.$wuid === WINDOW_STATE_SYNC_ID) {\n return;\n }\n // IE bug https://stackoverflow.com/questions/18265556/why-does-internet-explorer-fire-the-window-storage-event-on-the-window-that-st\n if (stampedAction.type === RECEIVE_INIT_STATE) {\n return;\n }\n // ignore other values that saved to localstorage.\n if (stampedAction.$uuid && stampedAction.$uuid !== lastUuid) {\n if (stampedAction.type === GET_INIT_STATE && !tabs[stampedAction.$wuid]) {\n tabs[stampedAction.$wuid] = true;\n dispatch(sendIniteState());\n } else if (stampedAction.type === SEND_INIT_STATE && !tabs[stampedAction.$wuid]) {\n if (!isSynced) {\n isSynced = true;\n dispatch(receiveIniteState(stampedAction.payload));\n }\n } else if (allowed(stampedAction)) {\n lastUuid = stampedAction.$uuid;\n dispatch(Object.assign(stampedAction, {\n $isSync: true\n }));\n }\n }\n };\n this.messageChannel = channel;\n this.messageChannel.onmessage = this.handleOnMessage;\n}\n\nvar createStateSyncMiddleware = exports.createStateSyncMiddleware = function createStateSyncMiddleware() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultConfig;\n\n var allowed = isActionAllowed(config);\n var channel = new _broadcastChannel.BroadcastChannel(config.channel, config.broadcastChannelOption);\n var prepareState = config.prepareState || defaultConfig.prepareState;\n var messageListener = null;\n\n return function (_ref3) {\n var getState = _ref3.getState,\n dispatch = _ref3.dispatch;\n return function (next) {\n return function (action) {\n // create message receiver\n if (!messageListener) {\n messageListener = new MessageListener({ channel: channel, dispatch: dispatch, allowed: allowed });\n }\n // post messages\n if (action && !action.$uuid) {\n var stampedAction = generateUuidForAction(action);\n lastUuid = stampedAction.$uuid;\n try {\n if (action.type === SEND_INIT_STATE) {\n if (getState()) {\n stampedAction.payload = prepareState(getState());\n channel.postMessage(stampedAction);\n }\n return next(action);\n }\n if (allowed(stampedAction) || action.type === GET_INIT_STATE) {\n channel.postMessage(stampedAction);\n }\n } catch (e) {\n console.error(\"Your browser doesn't support cross tab communication\");\n }\n }\n return next(Object.assign(action, {\n $isSync: typeof action.$isSync === 'undefined' ? false : action.$isSync\n }));\n };\n };\n };\n};\n\n// eslint-disable-next-line max-len\nvar createReduxStateSync = exports.createReduxStateSync = function createReduxStateSync(appReducer) {\n var receiveState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultConfig.receiveState;\n return function (state, action) {\n var initState = state;\n if (action.type === RECEIVE_INIT_STATE) {\n initState = receiveState(state, action.payload);\n }\n return appReducer(initState, action);\n };\n};\n\n// init state with other tab's state\nvar withReduxStateSync = exports.withReduxStateSync = createReduxStateSync;\n\nvar initStateWithPrevTab = exports.initStateWithPrevTab = function initStateWithPrevTab(_ref4) {\n var dispatch = _ref4.dispatch;\n\n dispatch(getIniteState());\n};\n\n/*\nif don't dispath any action, the store.dispath will not be available for message listener.\ntherefor need to trigger an empty action to init the messageListener.\n\nhowever, if already using initStateWithPrevTab, this function will be redundant\n*/\nvar initMessageListener = exports.initMessageListener = function initMessageListener(_ref5) {\n var dispatch = _ref5.dispatch;\n\n dispatch(initListener());\n};","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","/* global WorkerGlobalScope */\nfunction add(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {// this is run inside of a webworker\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') return;\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n\n}\n\nexport default {\n add: add\n};","import isNode from 'detect-node';\nimport BrowserMethod from './browser.js';\nimport NodeMethod from './node.js';\nvar USE_METHOD = isNode ? NodeMethod : BrowserMethod;\nvar LISTENERS = new Set();\nvar startedListening = false;\n\nfunction startListening() {\n if (startedListening) return;\n startedListening = true;\n USE_METHOD.add(runAll);\n}\n\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') throw new Error('Listener is no function');\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}\nexport default {\n add: add,\n runAll: runAll,\n removeAll: removeAll,\n getSize: getSize\n};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAA3RSTlMBGyaAj+COAAAATklEQVQI12NgYF3KAARZqyYwMDCtWrWCgYFr1apVDAxSQNKBQWvayqwGhqyJS7ImMGQtCQQqWrWSbdUCKAkRgchCVEJ0QUyAmAYxGWwLAO/XJanQtWsJAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkAgMAAACcbnALAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAA3RSTlMBJhuyD+QhAAAAmElEQVQY002QwQ3EIAwEIRKP3PsoIdKVkRJ4sBFPSqGJ5J1SbzFGBiFrhL3GXuec+zyvk7MBaEIHqcyn8bgLVU2O9C10zbJe6JVOFXRJUEqU5gMlUhyRd1RG0rWhgcR27fG9Ian+glIvJkEDlnBDGoy69J2KE9KFCU+WkhyQ+m+cIPZblqlsUpveNrItl83NDXPIXFucVHf/WalUP8Q3msMAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAOVBMVEVHcEz////////////////////////1/f7///////////////8XvtBLzdspw9Td9/l02OOV4uqz6/B36v74AAAAC3RSTlMAS+F5Y5y7+w/PL2N13L0AAAI3SURBVFjDrVeLkoMgDFQUgvIS//9jL2ptlQREvcx0OrVuSDYPkqbJiO6lVIMAEIOSstfNLdG9MomoGzooetdRBW8Hk5WhvYSPBfhqxVjGS3MpssCFHkyFDFkNLZgqAZ4JLU21cG7UmV9wQ5pbIlN8Z25Kl/BnbsuJyRHuK4BjSg3mgahD9ZhH8nNC8C/Mk3PWOjfNmVgWDYDJ26/4iSXpU96aMyAi3M0BcRAi2uEj85LQOQMAIcdDYUJ1kDOBhiB46wN+xY2DGL6POBY0Pd9bh5Dpx8GEWGc9tUGzHrgFPx84RArmz2PGB9JBo/WIt4mgBm8jk0yacSCkeO8WDYFxQlMPJjstlJ3wAU9H8PIXyUZSx94ubyb4sDBpYHEureq0kcxIVSD41aKAPM6ksSjiwYw0cnikMBIfFEkjtx7E4VfTHEklQRTAQYHbknBXAESBaNLAWLt8dgnOmV9Etn/PQS8r8Ma5A6OsgqHgwlpRB38YFwYShSOJ/pxRHImK5MEpjO6UkVwYZUUi/RhlE6kilfemwKVyT+8kpph2Rh1XTBoqynlrCEw5g2au5UgN3Z2L3CWdaWmm6nFfaKor5BP/7Uemqebb+lFBoa1zs0XtxdJdXG2x7mp7fblm54vq6/3JhJRMSerliPNsyNL/Oea9HzTfj7rvh+1boVD8ztE99v/eygKF1W0U13hR3Nt0d6FCdPpy6y2oEHX7b2b1hcrVdzWjlYkdQrY3F/hm7Dvc/wFw++/6PHF/M3WN1w9CPcIAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAANlBMVEVHcEz///////8XvtD////////////3/v7///////9Aytnf9/mG3uckwtOi5e277fJu1+Jf099PcC2lAAAACnRSTlMAXv//EYXa97o9c+EWDQAABKxJREFUeNrNW1GWgyAMrBQMAqLe/7JrEVttVQYU2Xzte2udmExCSODxSBHeVELKuiZijKiupRRVwx/3SCPkCLslJEWTF5uP4CwgoxI826cTg4RyGAJGz6NDI1m01NepUNUsSerqmq9PhL/ICinGXwXFuZDggp0WcUKFitgFQqlU4JJdJGl+aIhdJilkFOxKIVEW/8XFOHzJLpcYIvAM+DEa8Jqxkhrkwh+DgZfFxzTI4/8IDbLijzwojB/UQLDscpiRGnaDHKwLnG7AJ+LlCBCggWA3iShIgCMayPsUkEUd8JKtMvFOfLYRCbEOoM4MSj1HUWowHZ11QhwDtXHQS1FGn+JhhAHI/qB7HSwlmwA3AJn2uSutoUQTwAbo2o/NbadHs2vd2Y9H2i7JBKgBtAdq+2/Wke29aoNOMIGM+nxlt//tuYEaYWECjv3CTO+3oSeeBmNTE5kE+8nCs+312/MjG/TaR33kmlTD+PPn/4Ti2y0W16COoqDDV3o/E8wq6BbWoInwgPOuosNM0E6JaHKDifABkDy6D75WB4nIWYjcE0AsEOwBZ9bJ/vZ5JFMIusdbjfoA8MDwfqF5BsQxQTuDoT6QmAMshO+fs5gTJJaF6GXRIWx/Lw73RYM2TC4OUcDML9PHyGrKTM5XjgYGIoGADGDf7N6V3n/45HwLmUAgadDO7+yD+J4jjgaz2kESBM2k/Jt0GJ/59ZC8LuFAADj4wm3nWAzgzzZ6OZ9ef+gwCxuEgn3IAGv8SWGF0LB5VIgHukAK+MKfXGYRH1TBIHCWnEmF4rus4X5JwTCQQBZUxx74xZ+AVTgbkgwqYLwnbRS+A+4BEshgGhi8R4co/DcJ+tMKKB9Mm1lwmKvzfkutDmBhHaxGlHfoJv66Xl2tC5425xWYg2B73euU6jZztFoG0GFRdEYBZx81AX2XRsvfHuZilkeBJ6gAZgHazkMj0ZwLuh0LYC5Ij4J++Ug6CZMVmF5NoxH2AgRTQIKJ6Ifp5rBGMXAiSk7F6rBGsoufnlNgfzFS5qBG1NhiNCqALMftHtX2C2R8Ob6kINn0QIcVJNeUZN9ZgDx9gZIML0p7XIGYojS8OcfK8h8DQGU5IXvTd3FpYhiAb0zwrRkaCMNqQxncmsVsTlsoBClucxqzPe+itucK255HNShQiWlQIC0aBfZ8lqGLt2jimlQQfov1R+ZGIdKmfmI+ZSltOqhXbp5fXljXIar77unHNCrxVu2iE6+26qNPTz+qVRvRrP58WLujgEloVse16/WRCxLb9ZcNLGwbMbBgPHVk026PCLWfGiWMbKKHVr8jws8IAQ3W9dzusrGdQsd2JP/X4LL46Lb88DplfN/P4/v+gvH9PUd4Purzf3iEI+cxvv1V4F8d4yl+kOm2k0R12cNs7OAwGy99nK/8gcbyRzozH6pFDjfnzUfI4erSB5tzBiOhh8tlOfv/j+P9eTSQjyipbs4/eS/ZrI5tFXFD4oUvUcz8V910859/5sqdOM0EEo9TcpIJJM/fgD3jB3nNtc9UFeR1t05TVJBl793K668e80ri6JkuX/NGBKuVWlR5b8EfXj/Pfvt9cfv/+/p/6v3/P8kgibA//Me8AAAAAElFTkSuQmCC\"","module.exports = window[\"jQuery\"];","module.exports = require(\"core-js/library/fn/array/from\");","module.exports = require(\"core-js/library/fn/array/is-array\");","module.exports = require(\"core-js/library/fn/date/now\");","module.exports = require(\"core-js/library/fn/json/stringify\");","module.exports = require(\"core-js/library/fn/object/assign\");","module.exports = require(\"core-js/library/fn/object/create\");","module.exports = require(\"core-js/library/fn/object/define-properties\");","module.exports = require(\"core-js/library/fn/object/define-property\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptors\");","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");","module.exports = require(\"core-js/library/fn/object/keys\");","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","module.exports = require(\"core-js/library/fn/parse-float\");","module.exports = require(\"core-js/library/fn/parse-int\");","module.exports = require(\"core-js/library/fn/promise\");","module.exports = require(\"core-js/library/fn/set\");","module.exports = require(\"core-js/library/fn/symbol\");","module.exports = require(\"core-js/library/fn/symbol/iterator\");","module.exports = require(\"core-js/library/fn/symbol/to-primitive\");","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle